.NET Framework の新機能を超簡単に説明する

以前「[.NET Frameworkのバージョン対応表](http://qiita.com/nskydiving/items/3af8bab5a0a63ccb9893)」という記事を書いたのですが、「新機能」に書かれているものがどんなものなのか分かりづらかったので超簡単にまとめてみました。

本当に超簡単な説明しかありませんので、詳細を知りたい方はリンク先を参照してください。

# .NET Framework バージョン対応表
| .NET Framework | Visual Studio | C#  | 新機能 |
|:---------|:-------------:|:---:|:-----:|
| 1.0      | 2002 | 1.0 | - |
| 1.1      | 2003 | 1.2 | ODBCとOracle Database用のデータ接続<br>IPv6 |
| 2.0      | 2005 | 2.0 | 64ビットシステム<br>.NET Micro Framework<br>[C#]ジェネリック<br>[C#]イテレータ |
| 3.0      | 2005 | 2.0 | WPF・WCF・WF・WCS |
| 3.5      | 2008, 2010    | 3.0 | ASP.NET MVC<br>ASP.NET AJAX<br>[C#]LINQ<br>[C#]ラムダ式<br>[C#]暗黙的型付け(var) |
| 4        | 2012          | 4.0 | F#言語<br>Dynamic Language Runtime<br>MEF<br>Velocity<br>Windows タッチ<br>ADO.NET Entity Framework<br>[C#]Parallel Extensions(Parallel/PLINQ)<br>[C#]dynamic型<br>[C#]オプション引数/名前付き引数 |
| 4.5      | 2013          | 5.0 | Windowsストアアプリ<br>[C#]非同期プログラミング(async/await)<br>[C#]Caller Info |
| 4.6      | 2015          | 6.0 | RyuJIT<br>.NET Native<br>.NET Compiler Platform |
| 4.7      | 2017| 7.0 | Windows Formsの高DPI<br>WPFのタッチ<br>拡張された暗号<br>[C#]タプル<br>[C#]パターンマッチング |
| 4.8      | 2019| 7.3 | JITとNGENの強化<br>ZLibのセキュリティ強化<br>Windows Formsのアクセシビリティ強化<br>WCPのService Behavior強化<br>WPFの高DPI強化 |
| Core 1.0 | 2015 Update 3 | 6.0 | ASP.NET Core<br>オープンソース化<br>Mac/Linux/iOS/Android対応 |
| Core 1.1 | 2015 Update 3, 2017 | 6.0 | 1380個のAPI追加 |
| Core 2.0 | 2017 15.5 | 7.1 | .NET Standard 2.0対応<br>ASP.NET Core 2.0<br>Entity Framework Core 2.0<br>ML.NET |
| Core 2.1 | 2017 15.8.6 | 7.2 | ASP.NET Core 2.1<br>Entity Framework Core 2.1<br>.NET Core グローバルツール<br>HttpClient のパフォーマンス改善<br>Windows互換機能パック<br>[C#]Span\<T\>, Memory\<T\> |
| Core 2.2 | 2017 15.9 | 7.3 | ASP.NET Core 2.2<br>Entity Framework Core 2.2<br> |
| Core 3.0 | 2017 16.0, 2019 | 8.0 | .NET Standard 2.1対応<br>WPF・Windows Forms<br>[C#]Null 許容参照型<br>[C#]Interfaceのデフォルト実装<br>[C#]非同期ストリーム<br>[C#]Range型, Index型 |
| Core 3.1 | 2019 16.4 | 8.0 | C++/CLI対応<br>ASP.NET Core 3.1<br>Entity Framework Core 3.1 |
| 5 | 2019 16.8 | 9.0 | 「.NET Framework」と「.NET Core」を統合<br>ASP.NET Core 5.0<br>Entity Framework Core 5.0 |
| 6 | 2022 17.0 | 10.0 | Arm64対応<br>ホット リロード<br>.NET MAUI |
| 7 | 2022 17.4 | 11.0 | ネイティブ AOT<br>HTTP/3<br>[C#]生文字列リテラル |
| 8 | 2022 17.8 | 12.0 | Blazor United<br>[C#]コレクション式<br>[C#]プライマリ コンストラクター |

# .NET Framework 1.1 の新機能
### ODBCとOracle Database用のデータ接続
標準的なリレーショナルデータベース接続に対応。

### IPv6
OSI 参照モデルにおいてネットワーク層に位置付けられるプロトコルです。
IPv4 よりも多くの IP アドレスを使用することができます。

# .NET Framework 2.0 の新機能
### 64ビットシステム
現在の主流となっている 64 ビット版の Windows に対応。

### .NET Micro Framework
小型組み込み機器向けに開発された .NET Framework です。
バージョン4.0からはオープンソース化され、GitHub で公開されています。

http://netmf.github.io/

### [C# 2.0]ジェネリック
型をパラメータとして与え、その型に対応したクラスやメソッドを生成する機能です。

https://msdn.microsoft.com/ja-jp/library/512aeb7t.aspx

### [C# 2.0]イテレータ
イテレータまたは反復子と呼ばれ、配列やコレクションにおいて次の要素へアクセスする機能です。

https://msdn.microsoft.com/ja-jp/library/dscyy5s0(v=vs.90).aspx

# .NET Framework 3.0 の新機能
### WPF(Windows Presentation Foundation)
「Windows Forms」に代わる新しい UI サブシステムです。
ビュー部分は C# や VisualBasic ではなく XAML(ザムル) と呼ばれるマークアップ言語で記述します。

https://msdn.microsoft.com/ja-jp/library/aa970268(v=vs.110).aspx

現在では、さらに新しい UI サブシステムである UWP(Universal Windows Platform) が登場しています。

https://msdn.microsoft.com/ja-jp/windows/uwp/get-started/whats-a-uwp

### WCF(Windows Communication Foundation)
Webサービス、.NET Remoting、Distributed Transactions、メッセージキュー(MSMQ) を統合した新しい通信サブシステムです。

https://msdn.microsoft.com/ja-jp/library/dd456779(v=vs.110).aspx

### WF(Windows Workflow Foundation)
ワークフローを定義・実行・管理するための技術です。

https://msdn.microsoft.com/ja-jp/library/dd489441(v=vs.110).aspx

### WCS(Windows CardSpace)
ID管理するための技術です。

https://msdn.microsoft.com/ja-jp/library/aa480189.aspx

# .NET Framework 3.5 の新機能
### ASP.NET MVC
「ASP.NET Webフォーム」に代わる新しい Web アプリケーションを開発するためのフレームワークです。

https://www.asp.net/

### ASP.NET AJAX
Web アプリケーション上で AJAX(Asynchronous JavaScript + XML) を利用するための機能です。

https://msdn.microsoft.com/ja-jp/library/bb398874(v=vs.100).aspx

### [C# 3.0]LINQ(Language Integrated Query)
リレーショナルデータベース、XML、コレクションなどの様々なデータソースに対して、共通の文法で問い合わせが可能な機能です。

https://msdn.microsoft.com/ja-jp/library/bb397676.aspx

### [C# 3.0]ラムダ式
メソッド定義を式として扱える機能です。

https://msdn.microsoft.com/ja-jp/library/bb397687.aspx

### [C# 3.0]暗黙的型付け(var)
型推論による暗黙的型付けする機能です。

https://msdn.microsoft.com/ja-jp/library/bb384061.aspx

# .NET Framework 4 の新機能
### F#言語
OCaml をベースに開発された関数型とオブジェクト指向のマルチパラダイム言語です。

https://msdn.microsoft.com/ja-jp/library/dd233154(v=vs.110).aspx

### Dynamic Language Runtime
Ruby や Python などの動的言語を .NET Framework 上に実装可能です。

https://msdn.microsoft.com/ja-jp/library/dd233052(v=vs.110).aspx

### MEF(Managed Extensibility Framework)
拡張可能なアプリケーションを開発するためのフレームワークです。

https://msdn.microsoft.com/ja-jp/library/dd460648(v=vs.110).aspx

### Velocity
分散キャッシュAPIです。

### Windows タッチ
タッチパネル操作を利用したアプリケーションを開発できます。

https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd562197(v=vs.85).aspx

### ADO.NET Entity Framework
オブジェクト指向プログラミングとリレーショナルデータベースを利用したアプリケーションを開発するためのフレームワークです。

https://msdn.microsoft.com/ja-jp/library/bb399572(v=vs.110).aspx

### [C# 4.0]Parallel Extensions(Parallel/PLINQ)
並列プログラミング機能を簡単に記述できるプログラミング機能です。

https://msdn.microsoft.com/ja-jp/library/dd460693(v=vs.110).aspx

## [C# 4.0]dynamic型
実行時に変数の型を決定する機能です。

https://msdn.microsoft.com/ja-jp/library/dd264736.aspx

### [C# 4.0]オプション引数/名前付き引数
メソッドの引数にデフォルト値を指定したり、名前を付けることができる機能です。

https://msdn.microsoft.com/ja-jp/library/dd264739.aspx

# .NET Framework 4.5 の新機能
### Windowsストアアプリ
Windowsストアで配信可能なアプリを開発することができます。

https://developer.microsoft.com/ja-jp/windows/

### [C# 5.0]非同期プログラミング(async/await)
非同期プログラミングを簡単に記述できるプログラミング機能です。

https://msdn.microsoft.com/ja-jp/library/hh191443.aspx

### [C# 5.0]Caller Info
C++ でいうところの「\_\_FILE\_\_」「\_\_LINE\_\_」マクロのような呼び出し元情報を取得するためのプログラミング機能です。

https://msdn.microsoft.com/en-us/library/mt653988.aspx

# .NET Framework 4.6 の新機能
### RyuJIT
新しい JIT コンパイラです。
コンパイル時間が短縮され、パフォーマンスが向上しています。

## .NET Native
.NET言語で開発されたプログラムをネイティブ化することができます。

https://msdn.microsoft.com/ja-jp/library/dn807190(v=vs.110).aspx

### .NET Compiler Platform
.NETコンパイラープラットフォームです。
開発コードネームは「Roslyn(ロズリン)」と呼ばれていました。

https://github.com/dotnet/roslyn

# .NET Framework 4.7 の新機能
Windows Formsの高DPI、WPFのタッチ、拡張された暗号などがサポートされました。

https://github.com/Microsoft/dotnet/blob/master/releases/net47/README.md

### [C# 7.0]タプル
タプルは複数のオブジェクトを一つのオブジェクトにまとめることができる構文です。
これによりメソッドが多値戻り値を返すことができるようになりました。

https://github.com/dotnet/docs.ja-jp/blob/master/docs/csharp/tuples.md

### [C# 7.0]パターンマッチング
is 演算子と switch 文が拡張され、型による分岐と分解ができるようになりました。

https://github.com/dotnet/docs.ja-jp/blob/master/docs/csharp/pattern-matching.md

# .NET Framework 4.8 の新機能

JITとNGEN、ZLibのセキュリティ、Windows Formsのアクセシビリティ、WCPのService Behavior、WPFの高DPIなどが強化されました。

https://github.com/Microsoft/dotnet/blob/master/releases/net48/README.md

# .NET Framework Core 1.0 の新機能
### ASP.NET Core
Web アプリケーションを開発するための新しいフレームワークです。
開発コードネームは「ASP.NET MVC 5」と呼ばれていました。

https://docs.asp.net/en/latest/

### オープンソース化
「.NET Core」「ASP.NET Core」「.NET Compiler Platform」「Visual Studio Code」「PowerShell」などがオープンソース化され、GitHub で公開されています。

### Mac/Linux/iOS/Android対応
これまで Windows 以外の環境で　.NET アプリケーションを動作させるには互換環境である「Mono」を利用するのが一般的でした。
「.NET Core」では正式に Mac、Linux、iOS、Android に対応しています。

# .NET Framework Core 1.1 の新機能
新たに 1380 個の API が追加されました。
.NET Framework Core 1.1 では .NET Standard 1.6 がサポートされています。

https://github.com/dotnet/core/blob/master/release-notes/1.1/1.0-1.1-api-diff/1.0-1.1-api-diff.md

# .NET Framework Core 2.0 の新機能

### .NET Standard 2.0対応
.NET Standard 2.0 がサポートされ、大幅に API が追加されます。

https://github.com/dotnet/standard/tree/master/docs/netstandard-20

### .NET Core 2.0

https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-core-2-0/

### ASP.NET Core 2.0

https://blogs.msdn.microsoft.com/webdev/2017/08/14/announcing-asp-net-core-2-0/

### ML.NET

https://www.microsoft.com/net/apps/machinelearning-ai

# .NET Framework Core 2.1 の新機能

### .NET Core 2.1

https://blogs.msdn.microsoft.com/dotnet/2018/05/30/announcing-net-core-2-1/

### ASP.NET Core 2.1

https://blogs.msdn.microsoft.com/webdev/2018/05/30/asp-net-core-2-1-0-now-available/

### Entity Framework Core 2.1

https://blogs.msdn.microsoft.com/dotnet/2018/05/30/announcing-entity-framework-core-2-1/

### .NET Core グローバルツール
[npm global tools](https://docs.npmjs.com/getting-started/installing-npm-packages-globally) にインスパイアされた新しい開発ツールが追加されます。

### HttpClient のパフォーマンス改善
HttpClient のパフォーマンスが 2 〜 10 倍ほど改善されます。

### Windows互換機能パック
System.Drawing、EventLog、Windowsサービスなどの API が追加されます。

### [C# 7.2]Span\<T\>, Memory\<T\>
C# 7.2 で使用可能になった、連続したデータを扱うための型が使えるようになります。

http://ufcpp.net/study/csharp/resource/span/

# .NET Framework Core 2.2 の新機能
### .NET Core 2.2

https://blogs.msdn.microsoft.com/dotnet/2018/12/04/announcing-net-core-2-2/

### ASP.NET Core 2.2

https://blogs.msdn.microsoft.com/webdev/2018/12/04/asp-net-core-2-2-available-today/

### Entity Framework Core 2.2

https://blogs.msdn.microsoft.com/dotnet/2018/12/04/announcing-entity-framework-core-2-2/

# .NET Framework Core 3.0 の新機能

### .NET Standard 2.1対応

https://blogs.msdn.microsoft.com/dotnet/2018/11/05/announcing-net-standard-2-1/

### WPF・Windows Forms
WPF・Windows Forms を使ったデスクトップアプリケーションを開発できます。

### [C# 8.0]Null 許容参照型
他の言語でいうところの **null 安全(null safety)** に相当する機能です。

https://msdn.microsoft.com/ja-jp/magazine/mt829270.aspx

### [C# 8.0]Interfaceのデフォルト実装
Java でいうところの**デフォルトメソッド**に相当する機能です。

インターフェースを「契約」として見たときの問題点 ― C#への「インターフェースのデフォルト実装」の導入（前編）

https://www.buildinsider.net/column/iwanaga-nobuyuki/013

## [C# 8.0]非同期ストリーム
非同期ストリームのための構文「await foreach」とインターフェイス「IAsyncEnumerable<T>」が提供されます。

https://ufcpp.net/blog/2018/12/cs8asyncstreams/

### [C# 8.0]Range型, Index型
範囲とインデックスのための構文「a[^i], a[i..j]」と構造体「Range型, Index型」が提供されます。

https://ufcpp.net/blog/2018/12/cs8ranges/

# .NET Framework Core 3.1 の新機能

### C++/CLI対応
C++/CLI を使って .NET Core アプリケーションを開発できるようになります。

### ASP.NET Core 3.1 

https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-1/

### Entity Framework Core 3.1

https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-3-1-and-entity-framework-6-4/

# .NET 5 の新機能

### 「.NET Framework」と「.NET Core」を統合
「.NET Framework」と「.NET Core」を統合し「.NET」という名称に改められました。
次のバージョン「.NET 6」では「Xamarin」も統合される予定です。

### ASP.NET Core 5.0 

https://devblogs.microsoft.com/aspnet/announcing-asp-net-core-in-net-5/

### Entity Framework Core 5.0 

https://devblogs.microsoft.com/dotnet/announcing-the-release-of-ef-core-5-0/

# .NET 6 の新機能

### Arm64対応

Windows Arm64、macOS Arm64 に対応します。

### ホット リロード

ホット リロード は、アプリのソース コードを変更し、それらの変更を実行中のアプリに即座に適用することができる機能です。

### .NET MAUI
以前は Xamarin.Forms と呼ばれていました。
.NET マルチプラットフォーム アプリ UI (.NET MAUI) は、C# と XAML を使用してネイティブ モバイル アプリとデスクトップ アプリを作成するためのクロスプラットフォーム フレームワークです。

https://docs.microsoft.com/ja-jp/dotnet/maui/

# .NET ７ の新機能

### ネイティブ AOT に対応します。
https://learn.microsoft.com/ja-jp/dotnet/core/deploying/native-aot

### HTTP/3 に対応します。
https://docs.microsoft.com/ja-jp/dotnet/core/extensions/httpclient-http3

### [C# 11.0]生文字列リテラル
3 つ以上の連続した " で文字列を囲むとエスケープ文字を使わずに複数行の文字列を定義できるようになります。

https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/tokens/raw-string

# .NET 8 の新機能

### Blazor United
https://www.publickey1.jp/blog/23/blazorblazor_unitedspassr1blazor.html

### [C# 12.0]コレクション式
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/collection-expressions

### [C# 12.0]プライマリ コンストラクター
https://learn.microsoft.com/ja-jp/dotnet/csharp/whats-new/tutorials/primary-constructors