-1

我需要写一个简单的类。我需要两种方法:

Vector property = new Vector();
property.add("key", "value"); //set value of key
property.get("key"); //return value of key

CSharp 有这样的课程吗?

我正在尝试编写自己的课程

string[] keys;

public void add(string key, string value)
{
 this.keys[key] = value;
}

但字符串不能是数组的索引(但必须)。

有任何想法吗?谢谢。

4

4 回答 4

3
Vector property = new Vector();  -->   var property = new Dictionary<string, string>();
property.add("key", "value");    -->   property.Add("key", "value");
property.get("key")              -->   property["key"]

异常处理: 如果在字典中找不到键,最后一个可能会抛出异常。另一种永不抛出的方法是:

string value;
bool keyFound = property.TryGetValue("key", out value);

术语:您想到的通常称为字典地图与scalar相反的术语vector通常保留用于简单的数组或值列表。


PS:您可以创建自己的类(见下文)-尽管您拒绝Dictionary<TKey,TValue>仅仅是因为相关方法没有命名add并且get超出了我的范围。

class PropertyMap
{
    private Dictionary<string, string> map = new Dictionary<string, string>();

    public string add(string key, string value) { map.Add(key, value); }
    public string @get(string key) { return map[key]; }

    public string this[string key]  //  <-- indexer allows you to access by string
    {
        get
        {
            return @get(key);
        }
        set
        {
            add(key, value);
        }
    }
}
于 2012-11-10T11:15:03.780 回答
2

您可以轻松地为此使用字典。

Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("Key", "Value");

//access using:
dict["Key"];

编辑:如果需要,您还可以将字典用于其他对象,而不仅仅是字符串。如果您的“价值观”实际上是数字,您还可以使用:

var dict = new Dictionary<string, double>();

,这可能会为您节省一些转换回数字的时间。

于 2012-11-10T11:14:43.483 回答
2

使用此代码...

private Dictionary<string, string> keys = new Dictionary<string, string>();

public void add(string key, string value)
{
    this.keys.Add(key, value);
}

public string get(string key)
{
    return this.keys[key];
}
于 2012-11-10T11:29:12.753 回答
1

您可以使用Dictionary<TKey,TValue>来执行此操作。如果您想Vector用作 DictionaryVectorDictionary

例子

class Vector : Dictionary<string,string>
{
    public string Get(string Key) //Create a new void Get(string Key) which returns a particular value from a specific Key in the Dictionary (Vector)
    {
        return this[Key]; //Return the key from the Dictionary
    }
    public void add(string Key, string Value) //Create a new void Add(string Key, string Value) which creates a particular value referring to a specific Key in the Dictionary (Vector)
    {
        this.Add(Key, Value); //Add the key and its value to Vector
    }
}

Vector property = new Vector(); //Initialize a new class Vector of name property
property.add("key", "value"); //Sets a key of name "key" and its value "value" of type stirng
MessageBox.Show(property.Get("key")); //Returns "value"
//MessageBox.Show(property["key"]); //Returns "value"

这将创建一个Vector实现的新类,Dictionary以便您可以将其Vector用作Dictionary.

注意:这Dictionary<TKey, TValue>是一个通用类,提供从一组键到一组值的映射。字典中的每个添加都包含一个值及其关联的键。通过使用其键检索值非常快,因为Dictionary<TKey, TValue>该类是作为哈希表实现的。

谢谢,
我希望你觉得这有帮助:)

于 2012-11-10T11:22:07.850 回答