C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.83052 の関連記事表示

<< 0 >>
■83052  Re[1]: Funcデリゲートについての質問
□投稿者/ 魔界の仮面弁士 -(2017/03/01(Wed) 17:59:18)
    2017/03/01(Wed) 18:04:50 編集(投稿者)

    No83049 (rotto さん) に返信
    > これは、これでいいのですが Ienumerableインターフェースに追加されている
    × Ienumerable
    ○ IEnumerable


    > Funcデリゲートの型パラメーターは2つまで受け取り可能だと思っていたのですが
    > ここでは3つ型パラメーターを指定しています。

    shu さんが指摘されているように、Func は最後の型パラメーターが戻り値で、
    それより前は引数の型です。

    また、引数部の型パラメーターの数は、.NET 3.5.x では0〜4個、
    .NET 4 以降では0〜16個の実装があります。
    この点は Hongliang さんが指摘されていますね。


    補足としてもう一つ。共変性/反変性についても触れさせてください。

     // 引数 0 個、戻り値 string 型なデリゲート
     Func<string> func1 = delegate { return "TEST"; };

     // それを戻り値 object なデリゲートに代入
     Func<object> func2 = func1;

    上記は .NET Framework 3.5.x ではエラーになりますが、
    .NET Framework 4 以降では問題ありません。


    CLR2 では『delegate TResult Func<T1, T2, TResult>』表記でした。
    https://msdn.microsoft.com/ja-jp/library/bb534647%28vs.90%29.aspx

    CLR4 からは『delegate TResult Func<in T1, in T2, out TResult>』表記です。
    https://msdn.microsoft.com/ja-jp/library/bb534647%28vs.100%29.aspx


    型パラメータの in 指定は、『反変』であることを意味します。
    型パラメータの out 指定は、『共変』であることを意味します。

    in は「引数」あるいは setter 専用であることを示し、
    out は「戻り値の型」あるいは getter 専用であることを示しますが、
    これについては下記が参考になると思います。
    http://ufcpp.net/study/csharp/sp4_variance.html
記事No.83049 のレス /過去ログ142より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -