C#插入一个变量

本文关键字:一个 变量 插入 | 更新日期: 2023-09-27 17:59:04

我有这段代码,其中有一个arrayList。我使用arrayList方法。包含。

 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
}

这个方法不起作用,有什么想法可以让它发挥作用吗?

C#插入一个变量

我试着猜一下这个。

也许你想要这样的东西:

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)) { } 

如果我能准确理解你的问题,也许这就是的答案

    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");
    }

您将ArrayList上的Contains()方法与String的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"))
    {
        ..
    }

在这种情况下,Contains()接收一个字符串,并测试myString是否在序列中包含这些字母。

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

看起来你有一个php经验,并试图实现这样的东西:

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允许做上面的事情,你也不能这样做。