2012-02-23 15 views
1

ここは、C#プログラムの小さなスニペットで、ファイルから辞書を生成します。この関数のApt戻り値タイプ

var _mappings = File.ReadAllLines("file.txt") 
    .Select(line => 
    { 
     var splitt = line.Split(new char[] { ' ' }, 
      StringSplitOptions.RemoveEmptyEntries); 

     return new fooclass 
     { 
      foo = abc[0], 
      foo1 = abc[1], 
      foo2 = abc[2], 
     }; 
    }) 
    .ToDictionary<fooclass, string>(mkey => mkey.abc[0]); 

私はこの辞書をどのように関数から返すのかジレンマです。弱い型を返すことは関数内では良いとはみなされず、var自体は戻り型にすることはできません。

だから、このような場合には何が理想でしょうか?

ToDictionary<char, fooclass>(mkey => mkey.abc[0]); 

をそして、あなたはそのように、あなたの関数からそれを返すことができます。

+0

'Dictionary '? –

+0

これは 'ToDictionary 'を指定したときに既に強く型付けされています。実際問題は何ですか? – ken2k

+0

私はそれを取る_mappingsは辞書型ですか?そのタイプを返すのは何が問題なのですか? –

答えて

0

もし役に立ちましたら、以下をコンパイルしてください。

public class SomeClass 
{ 
    private Dictionary<char, ScoresandPercentiles> function() 
    { 
     var _mappings = File.ReadAllLines("file.txt").Select(line => 
      { 
       var splitt = line.Split(new char[] { ' ' }, 
             StringSplitOptions.RemoveEmptyEntries); 

       return new ScoresandPercentiles 
       { 
        foo = splitt[0], 
        foo1 = splitt[1], 
        foo2 = splitt[2], 
       }; 
      }).ToDictionary(mkey => mkey.foo[0]); 
     return _mappings; 
    } 
} 

internal class ScoresandPercentiles 
{ 
    public string foo; 
    public string foo1; 
    public string foo2; 
} 
+0

辞書が本当に必要ない場合は、 '.ToList();'と 'List 'の戻り値の型を持つこともできます –

0

キーがcharあるようにあなたはおそらく、あなたのコードを変更する必要があります。

+0

簡単な宣言で、辞書の 'key'をどのように伝えるか? – Cipher

+0

私はあなたがコメントではなく、答えとしてそのような質問を掲示すべきだと思います。 – ken2k

+0

'' 'System.Collections.Generic.Dictionary ' '型を' '' System.Collections.Generic.Dictionary ''に暗黙的に変換することはできません。復習された辞書形式のキーを特定する明快な方法がなければならないように見えます。 – Cipher

1

varは、タイプではなく、弱くも動的でもありません。どのような型かをコンパイラに知らせるための手段です。この場合、ToDictionaryメソッドによって返されるタイプはDictionary<fooclass, string>となります。

+0

私はそれを試してこのエラーを受けました。暗黙的に型 'System.Collections.Generic.Dictionary 'を 'System.Collections.Generic.Dictionary 'に変換することはできません。復習された辞書形式のキーを特定する明快な方法がなければならないように見えます。 - – Cipher

+1

型引数の順序が一致するようにする必要があります: 'Dictionary 'は明らかに 'Dictionary 'と同じではありません。最初の型引数はキーの型で、2番目の型引数はキーの型です。 –

+0

メソッドで指定された順序が正しく、 '_mappings'に一致しています。それが問題です。上記のエラーが表示されます。 – Cipher