0

私はこのコードを持っています:

(a、b、c ... [0,1,2]の値を持つ単純な列挙型であり、ループされた数値ごとに表示したい-enum最終的なリストに対応する)。

public enum ENM
{
   a,b,c
}


void Main()
{

var e = Enumerable.Range(0,3).Select(myCounter=>new {

          final=((Func<int,ENM>)delegate (int i)
                                    {
                                         return (ENM)i;
                                    })(myCounter)

}).ToList();

これは問題なく機能しています。

書かずに解決策はありますdelegate(int i) {...}か?

psもちろん私はただ書くことができます(ENM)iが、問題は自動実行されたメソッドを(さまざまな方法で)書く方法を学ぶことです。

4

3 に答える 3

1

なぜだめですか

Enumerable.Range(0,3).Select(c=>(ENM)c).ToList()

または私は過度の複雑さの理由を見逃していますか?

var e = Enumerable.Range(0, 3).Select(myCounter => new
{
    final = ((Func<int, ENM>)(
        i=>{ 
            return (ENM)i;
            /* More code could be here */
        }))(myCounter)
}).ToList();

同じ混乱が必要な場合と同じくらいタイトです:)

于 2012-11-15T10:13:39.193 に答える
1
var e = Enum.GetNames(typeof(ENM)).Select((e, i) => new { final = e, index = i }).ToList();

また

var EnumNames = Enum.GetNames(typeof(ENM));
var EnumValues = Enum.GetValues(typeof(ENM)).Cast<ENM>().Select(e => (int)e);
var result = EnumNames.Zip(EnumValues, (n, v) => new { final = n, index = v });
于 2012-11-15T10:22:54.257 に答える
0

System.Enumこれを正確に行うための特定の方法があります。

var arr = Enum.GetValues(typeof(ENM));

に入れるにはList<ENM>

var lst = arr.Cast<ENM>().ToList();
于 2012-11-15T10:17:11.997 に答える