我想在某个属性中定义一个对象,但我不知道该怎么做。像这样:
var obj = ...;
obj["prop1"] = "Property 1";
obj["prop2"] = "Property 2";
我可以创建一个字符串来获取其中一个:
string temp = "prop1";
string prop1 = obj[temp];
在C#中可以吗?
答案 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>
答案 5 :(得分:0)