制作混合数组变量

本文关键字:变量 数组 混合 | 更新日期: 2023-09-27 18:23:56

我想知道是否可以在数组中添加一些变量,并以如下简单的方式访问它们:

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#允许您重载像索引器这样的运算符——因此,如果您愿意,您可以编写一个类,为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" };)和动态类型