2011-06-13 99 views
-4

我有这个代码,我有一个arrayList。我使用方法arrayList.Contains。C#插入一个变量

if (arrayList2.Contains(5)) 
{ 
    //something 
} 

我想在代码中用一个包含值arrayList2的变量(例如一个字符串)替换arrayList2。

string hello = "arrayList2" // create a varible with the value of the name of the arrayList 
if (hello.Contains(5)) // insert the variable "hello" instead of "arrayList2" 
{ 
    //something 
} 

此方法不起作用,任何想法如何我可以得到它的工作?

+0

你是什么意思5?这是索引或子字符串? – red1ynx 2011-06-13 10:22:09

+2

你还没有澄清这个问题,而不是你之前关闭的问题。 *你为什么认为这是你想要做的事情?* – 2011-06-13 10:23:17

+0

命名变量'hello'让我觉得你不尊重我们,并期望我们猜测你的难题。 – Snowbear 2011-06-13 10:25:39

回答

7

我会试着猜这一个。

也许你想是这样的:

Dictionary<string, ArrayList> arrayLists = new Dictionary<string, ArrayList>(); 
arrayLists.Add("arrayList1", new ArrayList()); 
arrayLists.Add("arrayList2", new ArrayList()); 
arrayLists.Add("arrayList3", new ArrayList()); 

string hello = "arrayList2"; 
if (arrayLists[hello].Contains(5)) { } 
0

如果我没有理解乌尔问题corectly也许这就是答案

public List<int> arrayList = new List<int>(); 

    private void test() 
    { 
     arrayList.Add(5); 
     object[] parameters = { 5 }; 
     var your_arraylist= this.GetType().GetField("arrayList").GetType(); 
     var your_arraylist_method = your_arraylist.GetMethod("Contains"); 
    } 
0

你混淆了载有()方法用一个ArrayList Contains()方法的一个字符串 - 虽然他们有相同的名称,他们做不同的事情。

ArrayList myArrayList = new ArrayList(); 
    object myObject = new object(); 
    if(myArrayList.Contains(myObject)) 
    { 
     .. 
    } 

在这种情况下,Contains()接受一个对象并测试ArrayList是否包含该对象。

在第二个例子中,你正在做的:

String myString = "Hello my name is Chris"; 
    if(myString.Contains("my name")) 
    { 
     .. 
    } 

在这种情况下,载有()接受一个字符串myString的测试是否包含在一个序列的字母。

您的代码不会编译,因为if (hello.Contains(5))正在尝试测试该字符串中是否存在整数。 hello.Contains(“5”)会起作用 - 尽管我猜这仍然不是你想要的。

0

看起来你有一个PHP的expirience并努力实现这样的事情:

private static ArrayList arrayList; 

    static void Main(string[] args) 
    { 
     arrayList = new ArrayList{1,2,3,4,5}; 

     var hello = "arrayList"; 
     var fieldInfo = typeof(Program).GetField(hello, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance); 

     dynamic dyn = fieldInfo.GetValue(null); 
     Console.WriteLine(dyn.Contains(5)); 
    } 

如果是这样,这是一个并不适用于C# - 即使C#4.0允许做这样的事情上面,你可以”不要这样做。