C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005...

34
ROOM G

Transcript of C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005...

Page 1: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

ROOM

G

Page 2: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

1.

2.

Page 3: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク
Page 4: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

VB7 / C#1.0

.NET1.0

VS2002

VB8 / C#2.0

.NET2.0

VS2005

VB9 / C#3.0

.NET3.5

VS2008

VB11 / C#5.0

.NET4.5

VS2012

言語

フレームワーク

ツール

三位一体の進化

Page 5: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク
Page 6: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

電球マーク(修正、リファクタリング)

Page 7: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク
Page 8: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

強化方針:

1. たくさんの小さな新機能

2. コード量削減

C#6.0

Page 9: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Using static

using System.Math;

public class Point

{

public double Dist

{

get { return Math.Sqrt(X * X + Y * Y); }

}

}

Page 10: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Using static

using System.Math;

public class Point

{

public double Dist

{

get { return Math.Sqrt(X * X + Y * Y); }

}

}

Page 11: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Using static

using static System.Math;

public class Point

{

public double Dist

{

get { return Sqrt(X * X + Y * Y); }

}

}

Page 12: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

public Point Add(Point point)

{

if (point == null)

{

throw new ArgumentNullException("point");

}

}

Nameof 演算子

Page 13: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

public Point Add(Point other)

{

if (other == null)

{

throw new ArgumentNullException("point");

}

}

Nameof 演算子

Page 14: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

public Point Add(Point point)

{

if (point == null)

{

throw new ArgumentNullException(nameof(point));

}

}

Nameof 演算子

Page 15: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

public Point Add(Point other)

{

if (other == null)

{

throw new ArgumentNullException(nameof(other));

}

}

Nameof 演算子

Page 16: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Null 条件演算子public static Point FromJson(JObject json)

{

if (json != null &&

json["x"] != null &&

json["x"].Type == JTokenType.Integer &&

json["y"] != null &&

json["y"].Type == JTokenType.Integer)

{

return new Point((int)json["x"], (int)json["y"]);

}

return null;

}

Page 17: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Null 条件演算子public static Point FromJson(JObject json)

{

if (json != null &&

json["x"]?.Type == JTokenType.Integer &&

json["y"]?.Type == JTokenType.Integer)

{

return new Point((int)json["x"], (int)json["y"]);

}

return null;

}

Page 18: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Null 条件演算子public static Point FromJson(JObject json)

{

if (json != null &&

json["x"]?.Type == JTokenType.Integer &&

json["y"]?.Type == JTokenType.Integer)

{

return new Point((int)json["x"], (int)json["y"]);

}

return null;

}

?.

Page 19: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Null 条件演算子public static Point FromJson(JObject json)

{

if (json != null &&

json["x"]?.Type == JTokenType.Integer &&

json["y"]?.Type == JTokenType.Integer)

{

return new Point((int)json["x"], (int)json["y"]);

}

return null;

}

Page 20: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Null 条件演算子public static Point FromJson(JObject json)

{

if (json?["x"]?.Type == JTokenType.Integer &&

json?["y"]?.Type == JTokenType.Integer)

{

return new Point((int)json["x"], (int)json["y"]);

}

return null;

}

Page 21: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Null 条件演算子

OnChanged(this, args);

Page 22: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Null 条件演算子

if (OnChanged != null)

{

OnChanged(this, args);

}

Page 23: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Null 条件演算子

{

var onChanged = OnChanged;

if (onChanged != null)

{

onChanged(this, args);

}

}

Page 24: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Null 条件演算子

OnChanged?.Invoke(this, args);

Page 25: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

自動プロパティの機能強化public class Point

{

public int X { get; } = 5;

public int Y { get; } = 7;

public Point(int x, int y) { X = x; Y = y; }

public double Dist

{

get { return Math.Sqrt(X * X + Y * Y); }

}

・・・

}

Page 26: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

インデックス初期化子public class Point

{

public int X { get; }

public int Y { get; }

public JObject ToJson()

{

var result = new JObject();

result["x"] = X;

result["y"] = Y;

return result;

}

}

Page 27: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

インデックス初期化子public class Point

{

public int X { get; }

public int Y { get; }

public JObject ToJson()

{

var result = new JObject() { ["x"] = X, ["y"] = Y };

return result;

}

}

Page 28: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

インデックス初期化子public class Point

{

public int X { get; }

public int Y { get; }

public JObject ToJson()

{

return new JObject() { ["x"] = X, ["y"] = Y };

}

}

Page 29: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

インデックス初期化子public class Point

{

public int X { get; }

public int Y { get; }

public JObject ToJson() =>

new JObject() { ["x"] = X, ["y"] = Y };

}

Page 30: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

• C# の歴史

• C#6.0 新機能

1.コーディングエクスペリエンス

2.言語の強化

Page 31: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Language features in C#6 and VB 14http://roslyn.codeplex.com/

C# Frequently Asked Questionshttp://blogs.msdn.com/b/csharpfaq/

The Visual Studio Team Blog

http://blogs.msdn.com/b/visualstudio/

リソース

Page 32: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

アンケートにご協力ください。

●アンケートに上記のSession ID のブレイクアウトセッションに

チェックを入れて下さい。

●アンケートはお帰りの際に、受付でご提出ください。

マイクロソフトスペシャルグッズと引換えさせていただきます。

Page 33: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク

Ask the Speaker のご案内

●本セッションの詳細は、EXPO 会場内

『Ask the Speaker』コーナー

Room G カウンタにてご説明させて

いただきます。是非、お立ち寄りください。

Ask the Speaker

EXPO会場MAP

Page 34: C# 6.0 新機能download.microsoft.com/download/F/F/F/FFF40A16-BFC2-4814...VB8 / C#2.0.NET2.0 VS2005 VB9 / C#3.0.NET3.5 VS2008 VB11 / C#5.0.NET4.5 VS2012 言語 フレームワーク