I’ve got a function which takes a ArrayList and loads it with strings along the line of
void func( ref ArrayList data )
{
if( data[0].GetType() == typeof(String) )
data[0] = "Jimmy";
}
In the function that calls func() I am having to create strings to put in the array:
ArrayList data = new ArrayList(1);
string str = "";
data.Add(str);
Is it possible to give the ArrayList the object types without having to create an object of that type? This:
ArrayList data = new ArrayList(1);
string str;
data.Add(str);
Gives a “Use of unassigned local variable ‘str'” error.
@James and Guffa: Thanks for the ‘stylistic’ hints, I’m new to c# and the advice is much appreciated
No, that is not possible. What you want is a reference that points to a string, and that is only possible if it actually points to a string. The fact that the variable that holds the reference is declared as a string reference doesn’t matter once you have copied the reference from the variable to the list.
I think that you should rethink the entire concept. I don’t know your reason for sending in a list of values and replace them like that, but there has to be a more object oriented way of doing it.
The
ArrayListclass is practically obsolete, you should use a genericList<T>instead (even if you can’t find any other common base class thanobject).As you are always sending in a list object to the method and not replacing it with a new list object, you should not use the
refkeyword. That’s only for when you want to change the reference to the list, not the contents of the list.