『C#3.xの新しい特性を深く理解する』博文シリーズまとめ
3671 ワード
C#2.0に比べて、C#3.xは一連の新しい特性を導入し、私たちのプログラミングに大きな便利さをもたらし、これらの新しい特性を有効に利用することで、より簡潔で優雅なプログラムを書くことができます.しかし、これらの新しい特性は、コンパイラが私たちに与えた小さな手口にすぎません.コンパイル時に必要なコードを加えて、C#2.0の角度から見ると「欠けている」コードを「完全」にし、実際に最終的に生成されたAssemblyとC#2.0時代には本質的な違いはありません.そのため、これらの新しい特性に納得せず、表面的な文章にすぎないと思っている人もいる.しかし、私の観点は、これらの特性が私たちに便利をもたらす以上、どうして使わないのですか.
このシリーズの重点は、これらの新しい特性を適用する場合(実際にはこれらの特性を使用するのは簡単である)ではなく、コンパイラがコンパイル時にどのような追加のコードを追加して「欠けている」コードを改善したのかを説明することにあります.[第1編]Anonymous Type Anonymous Typeでは、オブジェクトを定義し、任意の属性リストのセットを初期化できますが、このオブジェクトに対応するTypeは予め定義されていません.例:
[第2編]Extension Method Extension Methodにより、Typeの定義を変更することなくそのメソッドメンバーを拡張することができる:このTypeのExtension Methodとして呼び出すために、別のTypeに1つの特性のStaticメソッドを設定し、そのメソッドのようなメソッドを呼び出すことができる.LINQのOperator、例えばWhere、From、Order byなどは、このように定義されています.
[第3編]Lambda Expression
Lambda ExpressionはLINQに広く用いられており,その本質はDelegateである.このセクションでは、Lambda ExpressionがDelegateによってどのように実現されるかについて説明します.
[第4編]Automatically Impemented Property
Automatically Implemented Propertyにより、従来のprivate field+public propertyのプロパティ定義を簡略化できます.
[第5編]Object Initializer & Collection Initializer
Object Initializer&Collection Initializerは、オブジェクトの作成と初期化を2つにまとめたものです.Object Initializerが呼び出しを使用してオブジェクトを作成し、その属性メンバーを初期化します.Collection Initializerを使用してCollectionオブジェクトを作成するときに、Collectionの初期メンバーを同時に初期化します.
Artech
出典:
http://artech.cnblogs.com/
本文の著作権は著者とブログ園に共有され、転載を歓迎するが、著者の同意を得ずにこの声明を保留し、文章のページの明らかな位置で原文の接続を与えなければならない.そうしないと、法律責任を追及する権利を保留する.
このシリーズの重点は、これらの新しい特性を適用する場合(実際にはこれらの特性を使用するのは簡単である)ではなく、コンパイラがコンパイル時にどのような追加のコードを追加して「欠けている」コードを改善したのかを説明することにあります.[第1編]Anonymous Type Anonymous Typeでは、オブジェクトを定義し、任意の属性リストのセットを初期化できますが、このオブジェクトに対応するTypeは予め定義されていません.例:
1: var v = new{ID = Guid.NewGuid(), Name= "Zhang San" };
[第2編]Extension Method Extension Methodにより、Typeの定義を変更することなくそのメソッドメンバーを拡張することができる:このTypeのExtension Methodとして呼び出すために、別のTypeに1つの特性のStaticメソッドを設定し、そのメソッドのようなメソッドを呼び出すことができる.LINQのOperator、例えばWhere、From、Order byなどは、このように定義されています.
[第3編]Lambda Expression
Lambda ExpressionはLINQに広く用いられており,その本質はDelegateである.このセクションでは、Lambda ExpressionがDelegateによってどのように実現されるかについて説明します.
[第4編]Automatically Impemented Property
Automatically Implemented Propertyにより、従来のprivate field+public propertyのプロパティ定義を簡略化できます.
1: public class Vector
2: {
3: public double X { get; set; }
4: public double Y { get; set; }
5: }
[第5編]Object Initializer & Collection Initializer
Object Initializer&Collection Initializerは、オブジェクトの作成と初期化を2つにまとめたものです.Object Initializerが呼び出しを使用してオブジェクトを作成し、その属性メンバーを初期化します.Collection Initializerを使用してCollectionオブジェクトを作成するときに、Collectionの初期メンバーを同時に初期化します.
1: Vector v = new Vector { X = 1, Y = 2 };
2: IList<string> list = new List<string> { "Zhang San", "Li Si", "Wang Wu" };
作成者:Artech
出典:
http://artech.cnblogs.com/
本文の著作権は著者とブログ園に共有され、転載を歓迎するが、著者の同意を得ずにこの声明を保留し、文章のページの明らかな位置で原文の接続を与えなければならない.そうしないと、法律責任を追及する権利を保留する.