LoginSignup
21
8

More than 5 years have passed since last update.

平成と共に振り返るC#の歴史

Last updated at Posted at 2018-12-18

平成も終わるので、C#の年表と変更点と共にその年に起こった出来事を軽く書いて行きます。
(マイナーバージョンは割愛します)

C#の変更点は抜粋して記載します。

C# 1.0

リリース時期 .NET Framework 平成 出来事
2002年1月 1.0 14年 多摩川にタマちゃん襲来
Xbox発売

平成を元年から振り返りたかったですが、14年から開始です。お許しください。

◾️変更点

最初なので変更点ではないですが、初期リリースの機能について軽く触れます。

  • クラス
  • 構造体
  • インターフェース
  • イベント
  • プロパティ
  • デリゲート
  • ステートメント
  • 属性
  • リテラル

C# バージョン 1.0 は Java によく似ていました。
Microsoft Docsより

↑クラスやメソッドの書き方、変数定義なんかはそっくりです。
構造体が使えるあたりはC言語ですね。

C# 2.0

リリース時期 .NET Framework 平成 出来事
2005年11月 2.0 17年 愛知万博開催
YouTube開設

◾️変更点

  • Null 許容型
int? num = null;

2.0でNULL許容型が導入されます。

C# 3.0

リリース時期 .NET Framework 平成 出来事
2007年11月 2, 3, 3.5 19年 初代iPhone発売(日本未販売)
食品偽装問題

◾️変更点

  • 自動実装プロパティ
  • ラムダ式
  • 型推論
// 自動実装プロパティ
string Name { get; set; }

// ラムダ式
(int i) => i + 1; 

// 型推論
var test = "TEST";

私は上記すべて多用しています。
特にラムダ式はLINQでは必要不可欠です。ありがたや。
2007年リリースなので、10年前からあるんですね。

C# 4.0

リリース時期 .NET Framework 平成 出来事
2010年4月 4.0 22年 はやぶさが地球に帰還
もしドラ

◾️変更点

  • 名前付き/省略可能な引数
private int SampleFunc(int x, int y, int z = 0)
{
    return x + y + z;
}

SampleFunc(x: 1, y: 2); // 名前付き
SampleFunc(1, 2); // 省略可能な引数
SampleFunc(1, 2, 3);

C# 5.0

リリース時期 .NET Framework 平成 出来事
2012年8月 4.5 24年 東京スカイツリー開業
金環日食

◾️変更点

  • 非同期処理 (await, async)
private async Task SleepAsync()
{
    await Task.Delay(10 * 1000);
    Console.WriteLine("Success.");
}

SleepAsync();
Console.WriteLine("Execute.");

// 出力結果
// Execute.
// Success.

C# 6.0

リリース時期 .NET Framework 平成 出来事
2015年7月 4.6 27年 北陸新幹線開業
Windows 10リリース

◾️変更点

  • テンプレート文字列
// 今まで
Console.WriteLine(string.Format("{0}時 {1}分 {3}秒", h, m, s);
// または
Console.WriteLine(h + "時" + m + "分" + s + "秒");

// テンプレート文字列
Console.WriteLine($"{h}{m}{s}秒");

C# 7.0

リリース時期 .NET Framework 平成 出来事
2017年3月 4.6.2 29年 プレミアムフライデー
Nintendo Switch

◾️変更点

  • 出力変数宣言
  • パターン マッチング
// 出力変数宣言
// 今までは[DateTime dateValue]の宣言が必要だった
var dateStr = "2018-12-19";
if (DateTime.TryParse(dateStr, out var dateValue))
{
    Console.WriteLine("dateStr is Date");
}

// パターン マッチングと型スイッチ
if (obj is int num && num >= 0)
{
    Console.WriteLine("objは正の整数です。)
}

switch(obj)
{
    case 0:
        // 0の時だけここに来る
        break;
    case int num:
        // 整数の時だけここに来る
        break;
    case int num when num >= 0:
        // 整数且つ、0以上の時だけここに来る
        break;
}

C# 8.0

リリース時期 .NET Framework 平成 出来事
20XX年XX月 4.8(仮) - -

◾️変更点(未確定)

  • Nullable reference types
  • Ranges and indices
// Nullable reference types
// 以下の実装で警告が出るようになるらしい
string s = null; // Warning: Assignment of null to non-nullable reference type

// こっちは出ない
string? s = null; // Ok

// Ranges and indices
// インデックスの指定に使うらしい
Index i1 = 3;  // 前から数えて3番目
Index i2 = ^4; // 後ろから数えて4番目
int[] a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Console.WriteLine($"{a[i1]}, {a[i2]}"); // "3, 6"

最後に

現時点での最新版[C# 8.0]は平成のうちにリリースされるのか、
そしてリリースされる時期には何が歴史として残るのか、今後もC#と共に生きて見守ろうと思います。

21
8
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
8