C#中这种技术叫什么?

4
我想在某个属性内定义一个对象,但我不知道如何做。就像这样:

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

我可以创建一个字符串来获取它们中的一个:

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

在C#中是否有可能实现?

5
在C#中,它被称为字典。 - Adrian Buzea
@Adrian,我想OP是指索引器。 - Sweeper
索引器属性 - Ric
6个回答

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
Dictionary<string,string> obj = new Dictionary<string,string>();
obj.Add("prop1","Property 1");
obj.Add("prop2","Property 2");

string temp = obj["prop1"];

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

它非常像一个属性。





网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接