¿Se puede definir más de un tipo por Valor/Referencia por argumento?
Necesito hacer algo así:
Public Function blablabla(ByRef Image_File As String or As Bitmap)
O en su defecto:
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...
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
Cita de: Novlucker en 13 Enero 2013, 18:15 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:
Citaren un rato me paso por tu post de snippets para darte unas sugerencias en cuanto a estructura de código :)
perfecto!
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.
Cita de: EleKtro H@cker en 13 Enero 2013, 18:20 PM
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
Cita de: Novlucker en 13 Enero 2013, 19:20 PMCon 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.
Overload
Sobrecargar métodos es tener un método que se llame igual, pero que acepte diferentes parámetros.
Function GetWord() As String
Function GetWord(ByVal Position As Integer) As String
Function GetWord(ByVal Search As String) As String
http://msdn.microsoft.com/en-us/library/ms973896.aspx
Saludos
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:
Function Test(ByVal arg1 As Integer, _
Optional arg2 As Integer = Nothing)
MsgBox("A" & arg1)
End Function
Function Test(ByVal arg1 As Integer, _
Optional arg2 As String = Nothing)
MsgBox("B" & arg1)
End Function
Test(3)
Y no funciona,
¿Si el único parámetro de entrada que cambia es opcional, se puede sobrecargar de alguna manera?
¿Creas 3 sobrecargas? :P
Function Test(ByVal arg1 As Integer)
Function Test(ByVal arg1 As Integer, _
arg2 As Integer)
Function Test(ByVal arg1 As Integer, _
arg2 As String)
Saludos
'¬¬
I'm stupid.
xD
Saludos.
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!