はじめに
今年の2月にリリースされたばかりのVisual Studio 2008に含まれるC#3.
そこで、
C#3.
C#3.0の概要
C#3.
特に、
以下はC#3.
- 暗黙的型付
(Implicitly typed local variables) - 自動プロパティ
(Automatic Properties) - オブジェクト初期化子
(Object Initializers) - 匿名型
(Anonymous types) - コレクション初期化子
(Collection initializers) - 拡張メソッド
(Extension methods) - ラムダ式
(Rambda expressions) - LINQ
(Language Integrated Query)
実際にC#3. しかし、 それでは実際のコードを比較しながら見ていきましょう。 varというキーワードがvariant型を想像させるためか、 型推論自身は、 上記のC#3. コードエディタ上でインテリセンスやヒントを表示すると、 これについては、 C#3. VBのWithに似ていますが、 C#3. suzukiというオブジェクトの型は、 本来は、 これについても、 配列は、 C#3. 拡張メソッドによって、 上記は、 拡張メソッドを書く場合は、 拡張メソッドは同一の名前空間に対して有効です。
また、 例えば 今回は、 次回は、暗黙的型付
var i = 5;
var s = "A”;
var f = 2f;
var v = GetValue();
var suzuki = new Member();
var list = new List<string>();
using(var dt = new SampleDataSet.SampleDataTable()) {}
int i = 5;
string s = "A”;
float f = 2f;
double v = GetValue();
Member suzuki = new Member();
List<string> list = new List<string>();
using(SampleDataSet.SampleDataTable dt = new SampleDataSet.SampleDataTable()) {}
自動プロパティ
public object MyValue1 { get; set; }}
public object MyValue2 { get; private set; }}
private object _MyValue1;
public object MyValue {
get { return this._MyValue1; }
set { this._MyValue1 = value; }
}
private object _MyValue2;
public object MyValue {
get { return this._MyValue2; }
private set { this._MyValue2 = value; }
}
オブジェクト初期化子
var suzuki
= new Member { Code = 5 , Name = "鈴木”, Age = 31 };
Member suzuki = new Member();
suzuki.Code = 5;
suzuki.Name = "鈴木”;
suzuki.Age = 31;
匿名型
class Sample {
private void MyMethod() {
var suzuki
= new { Code = 5 , Name = "鈴木”, Age = 31 };
}
}
class Sample {
private void MyMethod() {
Member suzuki = new Member();
suzuki.Code = 5;
suzuki.Name = "鈴木”;
suzuki.Age = 31;
}
}
class Member {
private int _Code;
public int Code {
get { return this._Code; }
set { this._Code = value; }
}
private string _Name;
public string Name {
get { return this._Name; }
set { this._Name = value; }
}
private int _Age;
public int Age {
get { return this._Age; }
set { this._Age = value; }
}
}
コレクション初期化子
var c = new List<Member> { suzuki, sato, yamada };
List<Member> c = new List<Member>();
c.Add(suzuki);
c.Add(sato);
c.Add(yamada);
配列初期化子
var a = new [] { 1, 2, 3 };
int[] a = { 1, 2, 3 };
拡張メソッド
public void Hoge() {
var byteLength = "あいうeo".GetByteLength();
}
public static int GetByteLength(this string value) { /* 略 */ }
public void Hoge() {
var byteLength = GetByteLength("あいうeo”);
}
public static int GetByteLength(string value) { /* 略 */ }
次回の予定