Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Eleкtro en 13 Enero 2013, 18:10 pm



Título: [SOLUCIONADO] Pequeña duda sobre argumentos
Publicado por: Eleкtro en 13 Enero 2013, 18:10 pm
¿Se puede definir más de un tipo por Valor/Referencia por argumento?

Necesito hacer algo así:
Código:
Public Function blablabla(ByRef Image_File As String or As Bitmap)

O en su defecto:
Código:
Public Function blablabla(ByRef Image_File As "Cualquier tipo que séa aceptable")
If Image_File = Ctype(string) then...
if Image_File = Ctype(Bitmap) then...


Título: Re: Pequeña duda sobre argumentos
Publicado por: Novlucker en 13 Enero 2013, 18:15 pm
Todos los tipos de objetos deberían de implementar la misma interfaz o heredar de la misma base (nada de lo que pones como ejemplo), de lo contrario, para eso se utilizan las sobrecargas :P

Podrías pasar un object, pero no es para nada recomendable, donde vea que comienzas a hacer eso te baneo :xD, en un rato me paso por tu post de snippets para darte unas sugerencias en cuanto a estructura de código :)

Saludos
 
 


Título: Re: Pequeña duda sobre argumentos
Publicado por: Eleкtro en 13 Enero 2013, 18:20 pm
Podrías pasar un object, pero no es para nada recomendable, donde vea que comienzas a hacer eso te baneo :xD)

Pero digo yo que no seré el primero en tener este problemilla xD... ¿Como lo solucionarías tú?  :-[

Que pocas soluciones hay entonces.

PD: gracias!

EDITO:
Citar
en un rato me paso por tu post de snippets para darte unas sugerencias en cuanto a estructura de código :)
perfecto!


Título: Re: Pequeña duda sobre argumentos
Publicado por: Novlucker en 13 Enero 2013, 19:20 pm
Otra alternativa es utilizar generics, pero tampoco aplica para el caso, si vas a utilizar generics no deberías de estar verificando el tipo luego.

Pero digo yo que no seré el primero en tener este problemilla xD... ¿Como lo solucionarías tú? :-[

Con sobrecargas, tendría dos métodos :P

Saludos


Título: Re: Pequeña duda sobre argumentos
Publicado por: Eleкtro en 17 Enero 2013, 19:59 pm
Con sobrecargas, tendría dos métodos :P

¿Me puedes indicar el nombre del término en inglés para buscar información?

Me dices sobrecarga y me quedo igual, no consigo asociarlo a nada... sobrecargar un sub/función, ¿eso que leches es? xD.


Título: Re: Pequeña duda sobre argumentos
Publicado por: Novlucker en 17 Enero 2013, 20:05 pm
Overload

Sobrecargar métodos es tener un método que se llame igual, pero que acepte diferentes parámetros.
Código
  1. Function GetWord() As String
  2. Function GetWord(ByVal Position As Integer) As String
  3. Function GetWord(ByVal Search As String) As String
http://msdn.microsoft.com/en-us/library/ms973896.aspx

Saludos


Título: Re: Pequeña duda sobre argumentos
Publicado por: Eleкtro en 17 Enero 2013, 20:23 pm
Gracias.

Y el própio intérprete sabe que función debe usar según el tipo de valor con el que lo llames independientemente del nombre, QUE BUENO!

Pero yo (que soy muy retorcido y me gusta experimentar situaciones xD), he intentado exprimir el ejemplo de esta manera para ver que pasaba:

Código
  1.    Function Test(ByVal arg1 As Integer, _
  2.    Optional arg2 As Integer = Nothing)
  3.        MsgBox("A" & arg1)
  4.    End Function
  5.  
  6.  
  7.    Function Test(ByVal arg1 As Integer, _
  8.    Optional arg2 As String = Nothing)
  9.        MsgBox("B" & arg1)
  10.    End Function
  11.  
  12.    Test(3)

Y no funciona,

¿Si el único parámetro de entrada que cambia es opcional, se puede sobrecargar de alguna manera?


Título: Re: Pequeña duda sobre argumentos
Publicado por: Novlucker en 17 Enero 2013, 20:31 pm
¿Creas 3 sobrecargas? :P
Código
  1. Function Test(ByVal arg1 As Integer)
  2.  
  3. Function Test(ByVal arg1 As Integer, _
  4.    arg2 As Integer)
  5.  
  6. Function Test(ByVal arg1 As Integer, _
  7.    arg2 As String)

Saludos


Título: Re: Pequeña duda sobre argumentos
Publicado por: Eleкtro en 17 Enero 2013, 20:47 pm
'¬¬

I'm stupid.

xD

Saludos.


Título: Re: [SOLUCIONADO] Pequeña duda sobre argumentos
Publicado por: $Edu$ en 17 Enero 2013, 20:55 pm
Buscate en google las reglas de overloads, ya que en el caso ese que dejaste por ejemplo, que solo se diferencia con un argumento opcional, no se puede, y asi con otras cosas tampoco, por eso te podrias mirar algo para tenerlo en cuenta.

Aprendes rapido Elektro! saludos!