|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Creating array on the fly as a parameter to a subroutine?Public Class ExampleClass ReadOnly Property HelloWorld() As String Get Return "Hello, World" End Get End Property End Class And a subroutine: Sub DoSomething(ec as ExampleClass) End Sub You can invoke this using: DoSomething(New ExampleClass) In that you don't need to create the parameter via variable. Is the same possible with arrays as parameters: Sub DoSomething(Words() As String) End Sub This can be invoked like this: Dim MyWords() = {"Hello", "World", "Goodbye"} DoSomething MyWords However, is it possible to create an array on the fly like with something like this: DoSomething(New String()={"Hello","World","Goodbye"}) This doesn't work but gives an idea. Cheers, Rob. PS. I know about ParamArray Words() As String. > DoSomething(New String()={"Hello","World","Goodbye"}) Later...Hmm, just done some experiments with ParamArray and discovered an interesting side effect: Dim MyWords() As String = {"Hello", "World", "Goodbye"} Something(MyWords) Sub Something(ByVal ParamArray MyWords() As String) Dim x As String For Each Word As String In MyWords x &= Word & " " Next End Sub The thing that surprised me about this is that I kind of expected VB.NET to end up with MyWords() inside the sub containing just one item but this item was itself an array. I have vague memories of this happening in VB6. However, something different happens in that although only one parameter is being passed, ParamArray MyWords() As String ends up containing 3 items which is fine. So it means that when you use ParamArray you can either pass a series of strings (in this example) or a single string array. Taking it further: Something(MyWords, "Wibble", "Wobble") generates a compile error complaining that: c:\inetpub\wwwroot\Hops\WebForm1.aspx.vb(32): Value of type '1-dimensional array of String' cannot be converted to 'String'. Which is kind of expected. I assume this is intentional and programmed this way and not an accident of some kind. Cheers, Rob. PS. Doesn't answer my original question though of whether you can create and initialise arrays on the fly.
Show quote
Hide quote
"Rob Nicholson" <rob.nicholson@nospam-unforgettable.com> wrote in message
news:Op3Ad3WNFHA.1300@TK2MSFTNGP14.phx.gbl... > Consider the following example class: > > Public Class ExampleClass > ReadOnly Property HelloWorld() As String > Get > Return "Hello, World" > End Get > End Property > End Class > > And a subroutine: > > Sub DoSomething(ec as ExampleClass) > End Sub > > You can invoke this using: > > DoSomething(New ExampleClass) > > In that you don't need to create the parameter via variable. Is the same > possible with arrays as parameters: > > Sub DoSomething(Words() As String) > End Sub > > This can be invoked like this: > > Dim MyWords() = {"Hello", "World", "Goodbye"} > DoSomething MyWords > > However, is it possible to create an array on the fly like with something > like this: > > DoSomething(New String()={"Hello","World","Goodbye"}) > > This doesn't work but gives an idea. > > Cheers, Rob. > > PS. I know about ParamArray Words() As String. > > DoSomething(New String()={"Hello","World","Goodbye"}) Oh, I was so close :-) The syntax is actually:DoSomething(New String() {"Hello", "World", "Goodbye"}) Didn't need the "=" character which you have to use when initialising a variable: Cheers, Rob. Sub DoSomething(Words() As String)
End Sub DoSomething(New String(){"Hello", "World", "Goodbye"}) hope that helps.. Imran. Show quoteHide quote > Consider the following example class: > > Public Class ExampleClass > ReadOnly Property HelloWorld() As String > Get > Return "Hello, World" > End Get > End Property > End Class > And a subroutine: > > Sub DoSomething(ec as ExampleClass) > End Sub > You can invoke this using: > > DoSomething(New ExampleClass) > > In that you don't need to create the parameter via variable. Is the > same possible with arrays as parameters: > > Sub DoSomething(Words() As String) > End Sub > This can be invoked like this: > > Dim MyWords() = {"Hello", "World", "Goodbye"} > DoSomething MyWords > However, is it possible to create an array on the fly like with > something like this: > > DoSomething(New String()={"Hello","World","Goodbye"}) > > This doesn't work but gives an idea. > > Cheers, Rob. > > PS. I know about ParamArray Words() As String. >
Mixing VB variables with standard text to output text file
Refresh DataSet - please Help Me :-( Get Variable Out of Arraylist ReInstantiate an Object? Advice needed How can I determine WHICH exception I got in my CATCH? using StringBuilder class for concatenation? foxpro table hosed up when called 2nd time from VB.net SaveFileDialog how to convert... |
|||||||||||||||||||||||