这种技术在C#中被称为什么?

时间:2015-10-23 14:31:38

标签: c#

我想在某个属性中定义一个对象,但我不知道该怎么做。像这样:

var obj = ...;
obj["prop1"] = "Property 1";
obj["prop2"] = "Property 2";

我可以创建一个字符串来获取其中一个:

string temp = "prop1";
string prop1 = obj[temp];

在C#中可以吗?

6 个答案:

答案 0 :(得分:9)

你想要的是字典:

var obj = new Dictionary<string, string>();

obj.Add("prop1", "Property1");

Console.WriteLine(obj["prop1"]);

如果属性定义良好,我建议创建一个类:

public class MyObject
{
    public string Prop1;
    public string Prop2;
}

然后你可以做以下事情:

var obj = new MyObject
{
    Prop1 = "Property 1",
    Prop2 = "Property 2"
};

Console.WriteLine(obj.Prop1); //Will echo out 'Property 1'

答案 1 :(得分:1)

Dictionary<string,string> obj = new Dictionary<string,string>();
obj.Add("prop1","Property 1");
obj.Add("prop2","Property 2");

string temp = obj["prop1"];

答案 2 :(得分:1)

您正在做的事情被称为索引器。您可以向类添加索引器。它通常需要一个或多个参数。

致电索引器:

要调用索引器,请使用该类的实例,并在名称末尾添加[]。然后,将参数添加到[]中。我们以字符串为例。在字符串类中,有一个索引器采用类型int的参数。它获取字符串索引处的字符。

char theFirstChar = someString[0];

索引器也可以使用多个参数:

int[,] matrix = new int[10, 10]; //Note: This is not an indexer
int someValue = matrix[9, 4]; //This is

语法:

您可以像这样定义一个索引器:(我使用了字符串示例)

public char this[int i]
{
    get
    {
        // code
    }
    set
    {
        // code
    }
}

它非常像一个财产。

答案 3 :(得分:0)

答案 4 :(得分:0)

你在C#中最接近的是Dictionary<TKey, TValue>

来源:Set array key as string not int?

答案 5 :(得分:0)