我在想,如果我可以在陣列中增加一些變數,根本方法一樣訪問它們的:製作混合數組變量?
string[] ArrayName = {
string abc;
string varName;
}
//and later access them like:
Console.WriteLine(ArrayName[ab+"c"]);
我在想,如果我可以在陣列中增加一些變數,根本方法一樣訪問它們的:製作混合數組變量?
string[] ArrayName = {
string abc;
string varName;
}
//and later access them like:
Console.WriteLine(ArrayName[ab+"c"]);
我認爲你只是在找一個詞典:
var ArrayName = new Dictionary<string, string> {
{ "abc", "something" },
{ "varName", "something" },
};
Console.WriteLine(ArrayName["ab"+"c"]);
首先編輯
或者,你可能知道,C#,您可以overload operators像索引 - 所以如果你想,你可以寫一個類來定義它自己的特殊行爲obj["string"]
(返回一個同名的成員,或其他任何東西)。
public class IndexableClass
{
private string _abc = "hello world";
public string VarName { get; set; }
public string this[string name]
{
get
{
switch (name)
{
// return known names
case "abc" : return _abc;
// by default, use reflection to check for any named properties
default :
PropertyInfo pi = typeof(IndexableClass).GetProperty(name);
if (pi != null)
{
object value = pi.GetValue(this, null);
if (value is string) return value as string;
else if (value == null) return null;
else return value.ToString();
}
// if all else fails, throw exception
throw new InvalidOperationException("Property " + name + " does not exist!");
}
}
}
}
static void Main()
{
var ArrayName = new IndexableClass();
Console.WriteLine(ArrayName["ab" + "c"]);
}
第二個編輯
也有匿名類型(var ArrayName = new { abc = "something" };
)和dynamic types,這可能對你有用。
查看「Dictionary」類。 – Matthew
使用泛型集合來實現這樣的事情。 – RahulD