Movatterモバイル変換


[0]ホーム

URL:


Takaaki Suzuki, profile picture
Uploaded byTakaaki Suzuki
4,828 views

C# 7 Current Status

2016/10/22 時点での C# 7 の新機能についてご紹介

Embed presentation

CLR/H in Tokyo 第 11 回鈴木 孝明C# 7 Current Status- 今ある機能、全部見せます -
Name鈴木 孝明Twitter Account@xin9leAwardMicrosoft MVP for Visual Studioand Development TechnologiesWeb Sitehttp://xin9le.netAbout Me
using CSharp;
Grani, Inc. MVPs@neueccVisual C#http://neue.cc/@guitarrapc_techPowerShellhttp://tech.guitarrapc.com/@mayukiVisual C# (たぶん)http://www.misuzila.org/@xin9leVisual C#http://xin9le.net/
Grani, Inc. MVPs@neueccVisual C#http://neue.cc/@guitarrapc_techPowerShellhttp://tech.guitarrapc.com/@mayukiVisual C# (たぶん)http://www.misuzila.org/@xin9leVisual C#http://xin9le.net/四天王の中でも最弱 /(^o^) \
2016/07/162016/05/21ここ半年は C# 7 の追っかけ
2015/07/20VS 2015 と共に C# 6 リリース
2016/03/31//build/ 2016 で初めて C# 7 をデモ
Visual Studio “15”2016/04/05 : Preview2016/xx/xx : RC2016/05/10 : Preview 22016/07/07 : Preview 32016/08/22 : Preview 42016/10/05 : Preview 5約 1.5 ヵ月ペースで更新
全 11 機能の簡単なまとめNew Features
var bin = 0b1011; //--- New!!var dec = 123;var hex = 0x1F;Binary Literals利用可能な数字:0 / 1接頭辞:0b / 0B2 進数表記
var bin = 0b1100_1010; //--- 4ビットずつvar dec = 12_345_678; //--- 通貨の区切りっぽくvar hex = 0x33_ff_cc; //--- RGB 区切りDigit Separators先頭 / 末尾以外はいくつでも自由な桁区切り
if (int.TryParse("123", out var value))Console.WriteLine(value);Out Variable Declarations式の途中で変数宣言
static void Main(){IEnumerable<T> twice<T>(T x)where T : struct{yield return x;yield return x;}var xs = twice(12.3);}Local FunctionsGenericsyieldなんでもOK関数内でのみ使える関数
static void Main(){var a = 1;ref var d = ref PassThrough(ref a);d = 2;// (a, d) = (2, 2)}static ref int PassThrough(ref int b){ref var c = ref b;return ref c;}Ref Locals / Ref Returnsメモリ効率向上参照受け参照返し
(int sum, int count) Tally(IEnumerable<int> list){var s = 0; var c = 0;foreach (var x in list){s += x;c++;}return (s, c);}(int a, int b) t = Tally(new []{ 1, 2, 3 });TuplesValueTupleの糖衣構文多値戻り値サポート
//--- タプル型のインスタンスをvar t = (123, "abc");//--- 変数に分解(int x, string y) = t;(var x, var y) = t;var (x, y) = t;Deconstructions入れ子もOK任意の型を分解可能
より狭いスコープ//--- 定数マッチングvar v = x is 123;//--- 型マッチングobject x = "abc";if (x is string v){//--- 何か v を用いた処理}Type Switch - is -より簡易で厳密な判定
object x = 123;switch (x){case "abc":break;case int v when 100 < v: //--- v が 100 より大きいときbreak;case int v: //--- v が 100 以下のときbreak;}Type Switch - switch -より強力な条件分岐when 句での条件設定(case guard)
class Program{//--- ラムダ形式メンバーにpublic string Name => throw new NotImplementedException();public string SayHello() => throw new NotImplementedException();//--- 条件演算子 / null 結合演算子にpublic int ParseAsInt(string value)=> int.TryParse(value, out var x)? x: throw new ArgumentException(nameof(value));}Throw Expressionsコンパクトに書ける
class Program{//--- プロパティやインデクサのアクセサにpublic string Property{get => "Getter Property";set => Console.WriteLine(value);}//--- コンストラクタ / デストラクタにもpublic Program(string text) => Console.WriteLine(text);~Program() => Console.WriteLine("Destructor");}Expression-Bodied Everything{ } をより少なく
async ValueTask<int> GetValueAsync(){await Task.Delay(1000);return 123;}Arbitrary Async Returns既存型にも適用可能(予定)Task 以外の戻り値
Learn more…C# vNexthttp://blog.xin9le.net/entry/csharp-vnext
https://github.com/xin9le/TryCSharpVNextSamples on GitHub
見送られたけど、議論/検討されていた機能たちUnder Considerations
Non-null Reference Types参照型は元々 null 許可だけど、非 null な参照型も導入したい互換性をどう維持するかが非常に重たい課題Wire Format通信に使うデータ形式 (Json etc.) とのより簡易なやりとりデータ形式の緩い型付けと C# の強い型付けのつなぎ込みが課題議論されていた未搭載機能 #1
Record TypesImmutable な型を超簡単に書けるようにしたいC# 6 の頃に Primary Constructor として検討されていたヤツSupersedes関数/プロパティなどの前後に処理を挟み込む機能Source Generators として一時期 C# 7 の master に入っていた議論されていた未搭載機能 #2
Pattern Matching型や値の条件分岐をよりスッキリ書けるようにType Switch と呼ばれる is / switch 拡張だけ先行搭載される見込みAsync Streams非同期コレクション (= IAsyncEnumerable) の列挙をより簡単にforeach (await var x in asyncStreams) みたいに書けないか議論されていた未搭載機能 #3
Enjoy new features and future of C#!!Thank you
One more thing…
最先端を追求するグラニの新たな取り組みWhat’s New in Grani
オフィス体験最先端のスキャン技術超高精細なオフィスを再現もちろん C# + Unity で開発継続的な投資今後もコンテンツ作成予定得た知見の共有VR/AR に挑戦
ブースでご体験ください

Recommended

PPTX
4 Colors Othello’s Algorithm
PPTX
Live Coding で学ぶ C# 7
PDF
基礎からC言語 part1
PPTX
C++ tips 3 カンマ演算子編
PPT
Ilerpg Study 006
PPT
Ilerpg Study 003
PDF
Tokyo.R #19 発表資料 「Rで色々やってみました」
PPT
Ilerpg Study 004
PPTX
Coqでsprintf
PPTX
Coqでsprintf
PPT
Ilerpg Study 002
PDF
Better C#の脱却を目指して
PPTX
Coq 20100208a
 
PPTX
N3495 inplace realloc
PDF
20150928楽しいlambda
PDF
Implementation of Counters in ScopedBASIC
PDF
Visual studio 14 CTP2 概要
PPTX
トランジスタの接合容量(C-B)シミュレーション
PPTX
Scalamacrosについて
PDF
GaucheでCGIプログラミング
PDF
ライントレースで役立った「キュー」の話し
PDF
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
PDF
Phpmatsuri2011 LT j_nakada
PDF
Clrh 20140906 lt
PDF
Pact言語によるセキュアなスマートコントラクト開発
PDF
C#勉強会 ~ C#9の新機能 ~
PDF
20141129-dotNet2015
PPTX
C#6.0の新機能紹介
PPTX
Deep Dive C# 6.0

More Related Content

PPTX
4 Colors Othello’s Algorithm
PPTX
Live Coding で学ぶ C# 7
PDF
基礎からC言語 part1
PPTX
C++ tips 3 カンマ演算子編
PPT
Ilerpg Study 006
PPT
Ilerpg Study 003
PDF
Tokyo.R #19 発表資料 「Rで色々やってみました」
PPT
Ilerpg Study 004
4 Colors Othello’s Algorithm
Live Coding で学ぶ C# 7
基礎からC言語 part1
C++ tips 3 カンマ演算子編
Ilerpg Study 006
Ilerpg Study 003
Tokyo.R #19 発表資料 「Rで色々やってみました」
Ilerpg Study 004

What's hot

PPTX
Coqでsprintf
PPTX
Coqでsprintf
PPT
Ilerpg Study 002
PDF
Better C#の脱却を目指して
PPTX
Coq 20100208a
 
PPTX
N3495 inplace realloc
PDF
20150928楽しいlambda
PDF
Implementation of Counters in ScopedBASIC
PDF
Visual studio 14 CTP2 概要
PPTX
トランジスタの接合容量(C-B)シミュレーション
PPTX
Scalamacrosについて
PDF
GaucheでCGIプログラミング
PDF
ライントレースで役立った「キュー」の話し
PDF
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
PDF
Phpmatsuri2011 LT j_nakada
PDF
Clrh 20140906 lt
PDF
Pact言語によるセキュアなスマートコントラクト開発
Coqでsprintf
Coqでsprintf
Ilerpg Study 002
Better C#の脱却を目指して
Coq 20100208a
 
N3495 inplace realloc
20150928楽しいlambda
Implementation of Counters in ScopedBASIC
Visual studio 14 CTP2 概要
トランジスタの接合容量(C-B)シミュレーション
Scalamacrosについて
GaucheでCGIプログラミング
ライントレースで役立った「キュー」の話し
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
Phpmatsuri2011 LT j_nakada
Clrh 20140906 lt
Pact言語によるセキュアなスマートコントラクト開発

Similar to C# 7 Current Status

PDF
C#勉強会 ~ C#9の新機能 ~
PDF
20141129-dotNet2015
PPTX
C#6.0の新機能紹介
PPTX
Deep Dive C# 6.0
PPTX
(ゲームじゃない方の)switchで遊びたい話
PPTX
C# design note sep 2014
PDF
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
PPTX
C# 8.0 Preview in Visual Studio 2019 (16.0)
PPTX
復習も兼ねて!C#6.0-7.0
PPTX
C# 9.0 / .NET 5.0
PPTX
C# 7 New Features
PPTX
.NET Core 2.x 時代の C#
PDF
プログラミングNet framework3のお題
PPTX
Microsoft Learn で C# を学ぶとどんな感じ?
PDF
今日からできる!簡単 .NET 高速化 Tips
PPTX
.NET Compiler Platform
PPTX
Visual Studio 2008による 開発環境・プログラミングの進化
PPTX
Visual Studio による開発環境・プログラミングの進化
PPTX
C#言語機能の作り方
PDF
C#勉強会
C#勉強会 ~ C#9の新機能 ~
20141129-dotNet2015
C#6.0の新機能紹介
Deep Dive C# 6.0
(ゲームじゃない方の)switchで遊びたい話
C# design note sep 2014
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C# 8.0 Preview in Visual Studio 2019 (16.0)
復習も兼ねて!C#6.0-7.0
C# 9.0 / .NET 5.0
C# 7 New Features
.NET Core 2.x 時代の C#
プログラミングNet framework3のお題
Microsoft Learn で C# を学ぶとどんな感じ?
今日からできる!簡単 .NET 高速化 Tips
.NET Compiler Platform
Visual Studio 2008による 開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
C#言語機能の作り方
C#勉強会

More from Takaaki Suzuki

PDF
5 分で学ぶ Interpolated String Handler
PDF
C# における Redis 徹底活用
PDF
Inside FastEnum
PDF
30min Serverless xTuber
PPTX
Tetris Algorithm
PPTX
Sharing Deep Dive
PDF
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
PDF
DeclarativeSql
PDF
Sevens Algorithm
PDF
Friendly
PDF
WPF Interoperability
PDF
Universal Appとは? -デバイスに依存しないアプリケーション開発-
PDF
酒の肴はC# vNext
PDF
Async History in .NET
PDF
SignalR Tune-up
PDF
Twilioと.NET
PDF
Programmer's Brain
PDF
What's MVP
PDF
C#のココが好き!
PDF
Non-Stop Experience
5 分で学ぶ Interpolated String Handler
C# における Redis 徹底活用
Inside FastEnum
30min Serverless xTuber
Tetris Algorithm
Sharing Deep Dive
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
DeclarativeSql
Sevens Algorithm
Friendly
WPF Interoperability
Universal Appとは? -デバイスに依存しないアプリケーション開発-
酒の肴はC# vNext
Async History in .NET
SignalR Tune-up
Twilioと.NET
Programmer's Brain
What's MVP
C#のココが好き!
Non-Stop Experience

C# 7 Current Status


[8]ページ先頭

©2009-2025 Movatter.jp