0

可能重复:
在 C# 中创建常量字典

我目前有:

    public string GetRefStat(int pk) {
        return RefStat[pk];
    }
    private readonly Dictionary<int, int> RefStat =
    new Dictionary<int, int> 
    {
        {1,2},
        {2,3},
        {3,5} 
    };

这有效,但我使用 RefStat 字典的唯一时间是 GetRefStat 调用它时。

有没有办法可以将方法和字典结合起来?

4

3 回答 3

0

是的,您可以在类型的构造函数中初始化字典。然后,您可以将方法更改GetRefStat为属性。所以元代码可能看起来像这样

class Foo
{
    public Dictionary<int, int> RefStat {get;private set;}

    Foo()
    {
        RefStat = new Dictionary<int, int> 
        {
            {1,2},
            {2,3},
            {3,5} 
        };
    }
}

和用法

Foo f = new Foo();
var item = f.RefStat[0] 
于 2012-09-14T16:42:52.557 回答
0

好吧,您可以制作一个扩展方法,然后所有字典都可以使用该功能。我将假设这GetRefStat不仅仅是使用键从字典中获取值:

public static class DictionaryExtensions
{
    public static TValue GetRefStat<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, TKey key) 
    {
        return dictionary[key];
    }
}

然后所有字典都可以这样称呼它:

var dictionary = new Dictionary<int, int> 
    {
        {1,2},
        {2,3},
        {3,5} 
    };
var value = dictionary.GetRefStat(2)

如果这本字典是一堆常量,那么这个答案就过分了。只需使用if/elseor switch

于 2012-09-14T16:44:29.907 回答
0

像这样的东西?

 public string GetRefStat(int pk) 
{ 
    return new Dictionary<int, int>   
    {  
        {1,2},  
        {2,3},  
        {3,5}   
    }[pk]; 
} 
于 2012-09-14T16:45:08.943 回答