Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically create variables in VB.NET

Tags:

dynamic

vb.net

I have been trying to figure this out for some time now and can't seem to figure out an answer to it. I don't see why this would be impossible. I am coding in VB.NET.

Here is my problem: I need to dynamically create variables and be able to reference them later on in the code.

More Details: The number of variables comes from some math run against user defined values. In this specific case I would like to just create integers, although I foresee down the road needing to be able to do this with any type of variable. It seems that my biggest problem is being able to name them in a unique way so that I would be able to reference them later on.

Simple Example: Let's say I have a value of 10, of which I need to make variables for. I would like to run a loop to create these 10 integers. Later on in the code I will be referencing these 10 integers.

It seems simple to me, and yet I can't figure it out. Any help would be greatly appreciated. Thanks in advance.

like image 410
Jonathan Avatar asked Dec 05 '12 15:12

Jonathan


2 Answers

The best way to do something like this is with the Dictionary(T) class. It is generic, so you can use it to store any type of objects. It allows you to easily store and retrieve code/value pairs. In your case, the "key" would be the variable name and the "value" would be the variable value. So for instance:

Dim variables As New Dictionary(Of String, Integer)()
variables("MyDynamicVariable") = 10  ' Set the value of the "variable"
Dim value As Integer = variables("MyDynamicVariable")  ' Retrieve the value of the variable
like image 199
Steven Doggart Avatar answered Nov 09 '22 10:11

Steven Doggart


You want to use a List

Dim Numbers As New List(Of Integer)

For i As Integer = 0 To 9 
    Numbers.Add(0)
Next

The idea of creating a bunch of named variables on the fly is not something you are likely to see in any VB.Net program. If you have multiple items, you just store them in a list, array, or some other type of collection.

like image 21
Kratz Avatar answered Nov 09 '22 09:11

Kratz