タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

反変性に関するkuyのブックマーク (1)

  • ジェネリクスの共変性・反変性(C# によるプログラミング入門)

    概要 Ver. 4.0 C# 4.0 で、ジェネリクスの型引数に共変性・反変性を持たせることが可能になりました。 (共変性・反変性という言葉の意味は「covariance と contravariance」参照。) ジェネリックの共変性・反変性 ジェネリクスの共変性・反変性というものがどういうものかというのを説明する前に、まず背景を。 ジェネリックコレクションに関して、昔から以下のようなことをしたいという要望がありました。 List<string> strings = {"aa", "bb", "cc"}; List<object> objs = strings; これを認めてしまうと何がまずいかというと、 以下のような不正な値の書き換えが起こり得る。 // strings と objs は同じオブジェクト objs[0] = 5; // int に書き換えられたらまずい string s

    ジェネリクスの共変性・反変性(C# によるプログラミング入門)
    kuy
    kuy 2016/06/07
    変性注釈(variance annotation)を指定することでその型の利用目的を伝える。それによって共変性と反変性が実現できる。in/outの内部実装は実は.NET Framework 2.0の時点ですでにあった、とのこと。
  • 1