C#插入一个变量
问题描述:
我有这个代码,我有一个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
}
此方法不起作用,任何想法如何我可以得到它的工作?
答
我会试着猜这一个。
也许你想是这样的:
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)) { }
答
如果我没有理解乌尔问题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");
}
答
你混淆了载有()方法用一个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”)会起作用 - 尽管我猜这仍然不是你想要的。
答
看起来你有一个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允许做这样的事情上面,你可以”不要这样做。
你是什么意思5?这是索引或子字符串? – red1ynx 2011-06-13 10:22:09
你还没有澄清这个问题,而不是你之前关闭的问题。 *你为什么认为这是你想要做的事情?* – 2011-06-13 10:23:17
命名变量'hello'让我觉得你不尊重我们,并期望我们猜测你的难题。 – Snowbear 2011-06-13 10:25:39