• 0

VB.NET - How do I use pointers to pointers (if even possible)


Question

Hi

I want to use the New function for an object with array of objects as parameters something like this - 

Sub New(varPar () as Object)

End Sub

In my Class I have several objects that can be initialized.

I'm trying to make a the code general so the calling code will put in the varPar array the objects it wants to init and I will use something like this - 

Dim obj1 as <type1>

Dim obj2 as <type2>

.

.

.

dim objN as <typeN>

 

Sub New(varPar () as Object)

 if  varPar is nothing then

      return

end if       

if varPar.Length > 0 then

      obj1 = varPar(0)

if varPar.Length > 1 then

      obj1 = varPar(1)

 etc...      

End Sub

 

I want to do that in a loop like this

Dim obj1 as <type1>

Dim obj2 as <type2>

.

.

.

dim objN as <typeN>

dim varArray() as object = { obj1,obj2,obj3.......objN}

 

Sub New(varPar () as Object)

 if  varPar is nothing then

      return

end if       

for i = 0 to varPar.Lentgh -1 

      varArray(i) = varPar(i)

next

End Sub

 

This will init the varArray but not obj1 obj2 obj3 etc.

Does anyone know how I can achieve this?

It is trivial in C, but in VB I don't know if it is possible or not.

Thanks

3 answers to this question

Recommended Posts

  • 0
  On 05/07/2018 at 11:29, Ophir said:

Hi

I want to use the New function for an object with array of objects as parameters something like this - 

 

<snipped>

 

This will init the varArray but not obj1 obj2 obj3 etc.

Does anyone know how I can achieve this?

It is trivial in C, but in VB I don't know if it is possible or not.

Thanks

Expand  

I'm not sure I fully understand the question. So here are some questions of my own :)

 

The array injected in the constructor always has the same amount of elements as the internal array?

Are you trying to make each element of the internal array point to the corresponding element of the array injected in the constructor?

 

Could you maybe tell us which problem this construction is trying to solve? There might be a more efficient way of doing that in VB.NET.

  • 0
  On 05/07/2018 at 12:10, Raphaël G. said:

I'm not sure I fully understand the question. So here are some questions of my own :)

 

The array injected in the constructor always has the same amount of elements as the internal array?

Are you trying to make each element of the internal array point to the corresponding element of the array injected in the constructor?

 

Could you maybe tell us which problem this construction is trying to solve? There might be a more efficient way of doing that in VB.NET.

Expand  

The Array injected does not have to have the same amount of elements as the internal one.

I want to initialize the class variables obj1 obj2 obj3 etc in a loop instead of one by one while checking the Injected Array length.

 

In C I will put the Address of obj1 obj2 obj3 etc in the Internal Array and do something like this

 

void *varArray[] = { &obj1, &obj2, &obj3......&objN}

 

for(i = 0; i < <Injected Array>.length; i++)

{

        *varArray=varPar;    //By that I actually Initializing obj1, obj2, obj3 etc

}

 

I hope it is clearer now.

 

Do not know why when I submit the square parenthesis are removed.

Edited by Ophir
  • 0
  On 05/07/2018 at 14:35, Ophir said:

The Array injected does not have to have the same amount of elements as the internal one.

I want to initialize the class variables obj1 obj2 obj3 etc in a loop instead of one by one while checking the Injected Array length.

 

In C I will put the Address of obj1 obj2 obj3 etc in the Internal Array and do something like this

 

void *varArray[] = { &obj1, &obj2, &obj3......&objN}

 

for(i = 0; i < <Injected Array>.length; i++)

{

        *varArray=varPar;    //By that I actually Initializing obj1, obj2, obj3 etc

}

 

I hope it is clearer now.

 

Do not know why when I submit the square parenthesis are removed.

Expand  

If I'd convert what you posted here into vb.net, :

 

 

Dim list() As String = {"something", "something2"}


            For Each item In list

                'Then simply call the item

            Next

 

If you want to track each item, I usually make my own classes, for example let's say a standard name/value keypair:

 

Public class NameValueKeyPair

        public name as string

        public value as string

end class

 

Then, in a sub/function:

 

dim NameValueKeyPairList as new list(of NameValueKeyPair)

Dim NameValueKeyPair as new NameValueKeyPair

NameValueKeyPair.name = "name"

NameValueKeyPair.value = "value"

Namevaluekeypairlist.add(namevaluekeypair)

 

Do that in a loop, and then you can loop through the list to find what you need, for example:

 

For each item in NameValueKeyPairList

      If item.name = "name" then

             'Found it!

      End if

Next

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • A lot of your issues seem to be part of all the smart tech that's in any current car today. I too don't like the reliance on any of this smart tech, we have 2024 Ford Rangers at work with terrible systems for climate control and media. And there have been times when, stupidly relying on the reversing camera more than the mirrors, that I nearly reversed into a wall, because the display was showing half a second lag, and it seems all the emergency breaking was lagging too. No impact, but I managed to stop with about 1cm clearance from the tow ball because I finally checked my mirrors. Too much beeping, too much reliance on the screen and a computer that's just going to fail after 8 years. This is the era of end of life cars, which fail because of end of support software updates rather than mechanical issues. Now if my 2010 Yaris was electric, that would be the ultimate electric vehicle. None of the smarts, all of the power!
    • Why is it all of the sudden throwing ads everywhere on WhatsApp when they've done it all along without any ads? Their parent company makes plenty of money. Not everything has to make money when the parent company is worth billions. They're just greedy. As far as YouTube, it's absurd to charge for a premium service when people just want to watch a few videos. Charge a reasonable amount for an ad-free experience unless they want to watch 4K movies like they do on Netflix. Back to WhatsApp, they've done it this whole time, so them forcing ads will make users use other platforms.
    • Yeh, an alert human driver would have stopped, or at least drastically slowed down BECASUE there was a red stop sigh and a flipping yellow school bus, which in the context of the USA means kids may be around, but even being from another country, even I know that's a school bus!! It will be difficult for autonomous vehicles to understand the nuances that each country, yet alone each state/province/town has. There's obviously the general rules, but contexts for particular elements of certain streets also help. It's partly why many people don't like "out of towners" as they aren't used to or know the roads, and while this may become possible down the track for autonomous vehicles eventually, it could end badly for some. Lets hope they don't say it's all in the name of progress..
    • lol. If you're referring to Co-pilot it can be UNINSTALLED!!!!! If you're referring to Recall its... 1) OPT-IN 2) CAN ALSO BE UNINSTALLED
  • Recent Achievements

    • First Post
      Ian_ earned a badge
      First Post
    • Explorer
      JaviAl went up a rank
      Explorer
    • Reacting Well
      Cole Multipass earned a badge
      Reacting Well
    • Reacting Well
      JLP earned a badge
      Reacting Well
    • Week One Done
      Rhydderch earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      655
    2. 2
      ATLien_0
      275
    3. 3
      Michael Scrip
      222
    4. 4
      +FloatingFatMan
      187
    5. 5
      Steven P.
      146
  • Tell a friend

    Love Neowin? Tell a friend!