狠狠撸

狠狠撸Share a Scribd company logo
C# 6.0
@yone64
ちょっとややこしいバージョンのお話
? C# と .NET Framework と Visual Studioの関係
? C# : プログラミング言語
? .NET Framework
? Class Library : ライブラリ
? Runtime : 実行環境
? Visual Studio : 開発環境、C#をコンパイルしIL(中間言語)を生成
? C#のバージョンにより、使えるVisual Studioが決まるが、ターゲットとな
る.NET Frameworkのバージョンは選べる。
? C#6.0の文法を使うにはVisual Studio 2015が必要だが、.NET Framework2.0上で動作
するプログラムを作成可能。
? ただし、.NET Framworkのバージョンに制限を受ける機能も存在する。
とはいえ、年表
C#
1.0
1.2
2.0
3.0
4.0
5.0
6.0
.NET
Framework
1.0
1.1
2.0
3.0
3.5
4.0
4.5
4.6
Visual
Studio
2002
2003
2005
2008
2010
2012
2013
2015
Generic
Collection型パラメータ
WPF/WCF/WF
LINQ Expression
Taskdynamic
async/await
ちょっと振り返り
? C# 1.0 (Visual Studio .NET 2002 / .NET Framework 1.0)
? 最初のリリース
? C# 1.2 (Visual Studio .NET 2003 / .NET Framework 1.1)
? #line ,xml document
? C# 2.0 (Visual Studio 2005 / .NET Framework 2.0)
? 匿名メソッド、ジェネリック、null許容型、反復子、staticクラス、デリゲートの共
変性/反変性
? C# 3.0 (Visual Studio 2008 / .NET Framework 3.5)
? オブジェクト初期化子、コレクション初期化子、ラムダ式、拡張メソッド、匿名型、
自動プロパティ、言語統合クエリ (LINQ)、匿名型、ローカル var 型推論
ちょっと振り返り
? C# 4.0 (Visual Studio 2010 / .NET Framework 4.0)
? dynamic 、名前付き引数、省略可能なパラメーター、ジェネリックの共変性/反変性
? C# 5.0 (Visual Studio 2012?2013 / .NET Framework 4.5)
? async / await、呼び出し元情報属性
C# 6.0 言語強化
? パラダイムシフトを伴う大きな変更はない。
? たくさんの小さな新機能
? コード量の削減
? 例外フィルタ
? using static
? nameof演算子
? 文字列補間
? ラムダ式本体によるメンバの記述
? null条件演算子
? 自動実装プロパティーの強化 などなど
Visual Studio 2015
? .NET Compiler Platform “Roslyn”
? C#で記述されたC#コンパイラ
? ライブコード分析「Light Bulbs」
? リファクタリングすべき内容などを電球マークで警告
? C# Essentials
? C#6.0の記述への書き換えをSuggestするプラグイン
? https://visualstudiogallery.msdn.microsoft.com/a4445ad0-f97c-41f9-a148-
eae225dcc8a5
実际にコードを见てみましょう
新機能まとめ①
? 例外フィルター
? VB.NETより輸入
? keyword が if から when に変更されているので注意
? using static
? Java の static importと類似機能
? 乱用すると読みにくくなるので注意
? nameof演算子
? 文字列をリファクタリング連動させたい場合に便利
? インスタンスメンバにクラス修飾でアクセスするのが少し不思議
新機能まとめ②
? 文字列補間
? String.FormatのSyntaxSugar
? Iformattableは唯一.NET Framework4.6に依存する機能
? ラムダ式本体によるメンバの記述
? メソッドとプロパティーの本体がお手軽記述
? ちょっと見分けにくくなった気がしないでもない
? null条件演算子
? nullチェック不要
? structとclassで結果が違うので注意
新機能まとめ③
? 自動実装プロパティーの強化
? 読取専用プロパティーの追加
? 宣言时初期化

More Related Content

C sharp6