不可能以仅涉及属性的方式进行。理论上您可以编写一个 setter,但对于 getter,您需要指定一个要检索的键。这是不可能的,因为属性不接受参数。完成您想要的自然方法是使用方法:
private Dictionary<string, string> users = new Dictionary<string, string>();
public void Set(string key, string value)
{
if (users.ContainsKey(key))
{
users[key] = value;
}
else
{
users.Add(key, value);
}
}
public string Get(string key)
{
string result = null;
if (users.ContainsKey(key))
{
result = users[key];
}
return result;
}
或者,正如其他人已经说过的那样,您可以使用索引器,但我一直觉得它们有点麻烦。但我想这只是个人喜好问题。
只是为了完整起见,这就是 setter 的样子,尽管拥有这样的属性是非常不寻常且违反直觉的:
public KeyValuePair<string, string> Users
{
set
{
Set(value.Key, value.Value);
}
}
在内部,它使用Set
我之前的代码片段中的方法。