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/elseまたはを使用するだけ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 に答える