C#を1.0~7.0までのバージョンを比較してみる。その2

こんにちは、Takymです。
今回は前回のC#を1.0~7.0までのバージョンを比較してみる。その1続きです。

C# 1.0 vs C# 2.0

前回、書くことができなかった部分を紹介します。

Partial Type

これは、クラスを複数のファイルに分割して書くことができる機能です。

partial class Test
{
public Test()
{
SayHello();
}
}
partial class Test
{
public void SayHello()
{
Console.WriteLine("hello");
}
}

この機能はC# 1.0で使用する事ができません。

Nullable型

これは、構造体の型名の後ろに?を付けてnull値を使用できるようにするものです。
(この機能、昔からあったのか。意外だなぁ)

int? a = null;

しかし、C# 1.0でこの機能を使用したい場合は、以下の様に必ずクラスを作成しなければなりません。

public class NullableInt32
{
public int Value;
}

それ以外にも新機能はありますがここでは割愛します。

C# 2.0 vs C# 3.0

今度は、C# 2.0とC# 3.0を比べてみたいと思います。

暗黙的型付け

以下の様にvarを使用すると、コンパイラが型を判断してくれます。

var num = 123;
var str = "Test";
var bol = true;
var flo = 1.5F;

この機能は、C# 1.0、C# 2.0では使用できません。

拡張メソッド

静的メソッドの最初の引数にthisを付けると、あたかもインスタンスメソッドの様に使用する事ができます。

public static class StringExtensions
{
public static string AddString(this string left, string right)
{
return left + right;
}
// 別にAddStringと同じクラスにする必要はない。
public static void Main()
{
string str = "abc";
// C# 1.0、C# 2.0の場合
string str2 = StringExtensions.AddStriong(str, "def");
// C# 3.0以降の場合
string str3 = str.AddStriong("def");
}
}

ラムダ式

これは、匿名メソッドの進化版みたいなものです。
C# 2.0では以下の様に記述しなければいけませんでした。

Func f = delegate(string str)
{
return str.Replace("abc", "123");
};
Console.WriteLine(f("abcdef")); // 出力:123def

しかし、C# 3.0では以下の様に記述する事ができます。

Func f = (string str) =>
{
return str.Replace("abc", "123");
};
Console.WriteLine(f("abcdef")); // 出力:123def

とりあえず、今回はここまでです。
最後まで読んでくれてありがとうございました。
分からない事、間違い等はこの記事にコメントしてください。
参考にしたページ①:C# 2.0 の新機能 – C# によるプログラミング入門 | ++C++; // 未確認飛行 C
参考にしたページ②:C# 3.0 の新機能 – C# によるプログラミング入門 | ++C++; // 未確認飛行 C


次回の記事が完成しました。以下のリンクから次回の記事ページに行くことができます。
C#を1.0~7.0までのバージョンを比較してみる。その3
目次ページできました。→http://takymsystems.blog.fc2.com/blog-entry-18.html

コメントを残す

WordPress.com で次のようなサイトをデザイン
始めてみよう