- April 2010
- .NET Framework 4
- Visual Studio 2010
動的型付け変数
C# 4.0 の主役。
DLR(Dynamic Language Runtime)の流行を見越して追加された機能と思われますが・・・。
dynamic
で次のようなことができるようになります。
- 遅延バインド
- ダックタイピング
- ジェネリクス利用時の静的メソッド呼び出し
- 多重ディスパッチ
オプション引数、名前付き引数
// C# 4.0 or later
PrintOrderDetails(orderNum: 31, productName: "Red Mug", sellerName: "Gift Shop");
PrintOrderDetails(productName: "Red Mug", sellerName: "Gift Shop", orderNum: 31);
public void ExampleMethod(int required, string optionalStr = "default string",
int optionalInt = 10);
anExample.ExampleMethod(3, optionalInt: 4);
ジェネリックの共変性と反変性
型システムにおいては、共変性、反変性、不変性は、次のように定義されます。
Covariance
- 最初に指定された型よりも限定的な(強い)派生型を使用できるようにします。
- for example, IEnumerable, IEnumerator, IQueryable, and IGrouping<TKey,TElement>.
Contravariance
- 最初に指定された型よりも一般的な (弱い) 型を使用できるようにします。
- for example: IComparer, IComparable, and IEqualityComparer.
Invariance
- 最初に指定された型のみを使用できることを意味します。
COM(Embedded) 相互運用型の特別処理
COM 相互運用用のクラス(Runtime Callable Wrapper) を特別あつかいして COM 呼び出しをやりやすくしたそうです。
- COM インタフェースの引数は
ref
キーワードはオプションになった。(ref ばっかりになるので) - COM オブジェクトのインデックス付きプロパティが使えるようになった。(
get_X(index)
,Set_X(index, value)
=>X[index]
)