2011-06-13 141 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允許做這樣的事情上面,你可以」不要這樣做。