c sharp6

11
C# 6.0 @yone64

Upload: yone64

Post on 16-Aug-2015

229 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: C sharp6

C# 6.0@yone64

Page 2: C sharp6

ちょっとややこしいバージョンのお話

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 のバージョンに制限を受ける機能も存在する。

Page 3: C sharp6

とはいえ、年表

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/

WFLINQ Expression

Taskdynamic

async/await

Page 4: C sharp6

ちょっと振り返り

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 型推論

Page 5: C sharp6

ちょっと振り返り

C# 4.0 (Visual Studio 2010 / .NET Framework 4.0)

dynamic 、名前付き引数、省略可能なパラメーター、ジェネリックの共変性 / 反変性

C# 5.0 (Visual Studio 2012 ・ 2013 / .NET Framework 4.5)

async / await 、呼び出し元情報属性

Page 6: C sharp6

C# 6.0 言語強化

パラダイムシフトを伴う大きな変更はない。 たくさんの小さな新機能 コード量の削減

例外フィルタ using static

nameof 演算子 文字列補間 ラムダ式本体によるメンバの記述 null 条件演算子 自動実装プロパティーの強化 などなど

Page 7: C sharp6

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

Page 8: C sharp6

実際にコードを見てみましょう

Page 9: C sharp6

新機能まとめ①

例外フィルター VB.NET より輸入 keyword が if から when に変更されているので注意

using static

Java の static import と類似機能 乱用すると読みにくくなるので注意

nameof 演算子 文字列をリファクタリング連動させたい場合に便利 インスタンスメンバにクラス修飾でアクセスするのが少し不思議

Page 10: C sharp6

新機能まとめ②

文字列補間 String.Format の SyntaxSugar

Iformattable は唯一 .NET Framework4.6 に依存する機能 ラムダ式本体によるメンバの記述

メソッドとプロパティーの本体がお手軽記述 ちょっと見分けにくくなった気がしないでもない

null 条件演算子 null チェック不要 struct と class で結果が違うので注意

Page 11: C sharp6

新機能まとめ③

自動実装プロパティーの強化 読取専用プロパティーの追加 宣言時初期化