復習も兼ねて!
C# 6.0 – 7.0
2017/03/25 Fukuoka.NET #6
@tsubakimoto_s
自己紹介
松村 優大 (Yuta Matsumura)
MLBお兄さん (通称)
C# / PHP / Frontend / Azure / AWS
Microsoft MVP
(Visual Studio and Development Technologies)
所属 コミュニティ
2
Cognitive Services
な個人ネタ
3
Cognitive Servicesは
メジャーリーガーの
"ヒゲ"を識別できるか
http://tsubalog.hatenablog.com/entry/2016/07/02/175417
4
5
6
7
8
本題
9
★祝★
Visual Studio 2017
10
https://ja.wikipedia.org/wiki/Microsoft_Visual_Studio
Visual Studio 2005
.NET Framework 2.0
64bit Application
Visual Studio 2008
.NET Framework 3.0
.NET Framework 3.5
Visual Studio 2010
.NET Framework 4.0
F#, HTML5, CSS3
Visual Studio 2012
.NET Framework 4.5
Windows8 Application
Visual Studio 2013
.NET Framework 4.5.1
Git, TypeScript, Cummunity Edition
Visual Studio 2015
.NET Framework 4.6
.NET Core, Xamarin, Apache Cordova
11
https://www.visualstudio.com/ja/vs/whatsnew/
Visual Studio 2017
12
https://blogs.msdn.microsoft.com/visualstudio_jpn/2017/03/14/iterations-on-infinity/13
VS2017の新機能
•インストーラの刷新
•起動時間&読込時間の短縮
•ライブ単体テスト
•ツール群の充実
•C# 7.0, Visual Basic 15 のサポート
https://www.visualstudio.com/ja-jp/news/releasenotes/vs2017-relnotes 14
充実のツール群
•.NET Core, ASP.NET Core
•UWP
•Xamarin
•Apache Cordova
•Unity
•Node.js
•Office
•Azure
https://www.visualstudio.com/ja-jp/news/releasenotes/vs2017-relnotes 15
VS2017の新機能
•インストーラの刷新
•起動時間&読込時間の短縮
•ライブ単体テスト
•ツール群の充実
•C# 7.0, Visual Basic 15 のサポート
https://www.visualstudio.com/ja-jp/news/releasenotes/vs2017-relnotes 16
New Features in C# 7.0
17
の前に
18
New Features in C# 6.0
実用性の高い機能を紹介
19
自動実装プロパティ
•プロパティに値を直接代入
•readonlyなプロパティも初期化可能
•式による初期化も可能
class Fukuten
{
string Name { get; set; } = "Fukuten";
string Place { get; } = "福岡";
DateTime EventDate { get; set; }
= DateTime.Parse("2017/03/25");
} 20
メソッド定義にラムダ式を使う
•シンプルなメソッドで活用
•戻り値に return は使わない
•戻り値が無いメソッドでも使える
string GetWeekOfDay()
=> EventDate.ToString("dddd");
void ShowWeekOfDay(string w)
=> Console.WriteLine(GetWeekOfDay()); 21
プロパティ定義にラムダ式を使う
•Getterをラムダ式で定義
•getキーワード不要
int Length => Name.Length;
DateTime NextWeek => EventDate.AddDays(7);
// 以前の書き方
DateTime NextWeek
{
get { return EventDate.AddDays(7); }
} 22
Null条件演算子
•? を使いましょう
•対象がnullでなければ後続の処理を
行う
string GetDay(DateTime? d)
=> d?.ToString();
// 以前の書き方
string GetDay(DateTime? d)
{
return d == null ? null : d.ToString();
} 23
文字列補間
•文字列内の変数埋め込み
•バグが潜みやすい string.Format を
駆逐できる
string Say(string name) => $"Hi, {name}";
// 以前の書き方
string Say(string name)
{
return string.Format("Hi, {0}", name);
} 24
nameof演算子
•引数の式の“名前”を返す
class Fukuten
{
string MyName { get; } = nameof(Fukuten);
string Method { get; } = nameof(Fukuten.Say);
} 25
その他のC# 6.0の機能
•インデックス初期化子
•例外フィルター
26
C# 6.0の機能を
使ってますか?
27
New Features in C# 7.0
実用性の“高そう”な機能を紹介
28
switch文のcase節
•パターンマッチング
•型による比較
•キャストした値を変数に格納
•これまで)リテラル値での比較のみ
29
30
class Person
{
public string Name { get; set; }
}
class Student : Person
{
public int Age { get; set; }
}
31
void Switch(object o)
{
switch (o)
{
case true:
Console.WriteLine("o is boolean."); break;
case 1:
Console.WriteLine("o is number."); break;
case Student s when (s.Age == 30):
Console.WriteLine("o is 30 years old."); break;
case Student s:
Console.WriteLine("o is Student."); break;
case Person p when (p.Name == "yuta"):
Console.WriteLine("o is Yuta."); break;
case Person p:
Console.WriteLine("o is Person."); break;
default:
Console.WriteLine("o is something."); break;
}
}
ローカル関数
•関数内でのみ使用可能な関数
•これまで)Action / Func / Predicate
型などで実現
32
void LocalFunction()
{
void log(string m) => Console.WriteLine(m);
log("hoge");
// 以前の書き方
Action<string> log =
(m) => Console.WriteLine(m);
}
個人的な感想
•C# 6.0の実用性を高めた機能が多い
• 使いこなせばコード量の圧縮となる
•C# 7.0は「かゆい所に手が届く」機
能が提供された
33
ありがとうございました
34

More Related Content

PDF
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
PDF
Azure Functions Tips
PDF
オルターブースが実践する .NET Core “ガチ” 開発
PDF
.NET アプリを改善して実践する継続的インテグレーション
PDF
DevOps、その前に
PDF
PHPerだってサーバーレスしたい!
PDF
”試してみた”で終わらない サーバーレスアプリケーションの実践開発
PDF
The Twelve-Factor (A|M)pp with C#
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
Azure Functions Tips
オルターブースが実践する .NET Core “ガチ” 開発
.NET アプリを改善して実践する継続的インテグレーション
DevOps、その前に
PHPerだってサーバーレスしたい!
”試してみた”で終わらない サーバーレスアプリケーションの実践開発
The Twelve-Factor (A|M)pp with C#

What's hot (20)

PDF
.NET Core時代のCI/CD
PDF
未知との交信!?Project SignalR
PDF
C# runs anywhere, make anything
PDF
.NET 最新ロードマップと今押さえておきたい技術要素
PDF
GitHub Actions で CI/CD
PDF
【BS7】GitHubをフル活用した開発
PDF
マイクロサービス開発が捗る Project Tye
PDF
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
PDF
Database tools for .NET Core
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
PDF
【BS2】.NET 6 最新アップデート
PDF
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
PPTX
Xamarinでも有能な .NET Core
PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
PDF
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
PDF
そろそろレガシーな.Net開発をやめなイカ?
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
PDF
これから始める Bot Builder 開発のコツと舞台裏
PDF
いつでもどこでも .NET
PDF
【BS6】 マイクロソフトの GitHub との取り組み
.NET Core時代のCI/CD
未知との交信!?Project SignalR
C# runs anywhere, make anything
.NET 最新ロードマップと今押さえておきたい技術要素
GitHub Actions で CI/CD
【BS7】GitHubをフル活用した開発
マイクロサービス開発が捗る Project Tye
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
Database tools for .NET Core
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS2】.NET 6 最新アップデート
【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること
Xamarinでも有能な .NET Core
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
そろそろレガシーな.Net開発をやめなイカ?
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
これから始める Bot Builder 開発のコツと舞台裏
いつでもどこでも .NET
【BS6】 マイクロソフトの GitHub との取り組み
Ad

Similar to 復習も兼ねて!C#6.0-7.0 (20)

PPTX
C# 8.0 Preview in Visual Studio 2019 (16.0)
PPTX
Deep Dive C# 6.0
PPTX
Live Coding で学ぶ C# 7
PPTX
C#6.0の新機能紹介
PDF
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
PDF
20141129-dotNet2015
PDF
C#勉強会 ~ C#9の新機能 ~
PPTX
C# 9.0 / .NET 5.0
PPTX
最速C# 7.x
PPTX
C# 7・8 の復習
PPTX
C# 7 Current Status
PDF
今日からできる!簡単 .NET 高速化 Tips
PPTX
Visual basic14 の話
PDF
C#coding guideline その2_20130325
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
PPTX
Unity C#3からC#6に向けて
PPTX
PDF
Visual Studio 2017 RC C# まわり
PDF
C# コーディングガイドライン 2013/02/26
PPTX
Microsoft Learn で C# を学ぶとどんな感じ?
C# 8.0 Preview in Visual Studio 2019 (16.0)
Deep Dive C# 6.0
Live Coding で学ぶ C# 7
C#6.0の新機能紹介
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
20141129-dotNet2015
C#勉強会 ~ C#9の新機能 ~
C# 9.0 / .NET 5.0
最速C# 7.x
C# 7・8 の復習
C# 7 Current Status
今日からできる!簡単 .NET 高速化 Tips
Visual basic14 の話
C#coding guideline その2_20130325
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
Unity C#3からC#6に向けて
Visual Studio 2017 RC C# まわり
C# コーディングガイドライン 2013/02/26
Microsoft Learn で C# を学ぶとどんな感じ?
Ad

More from Yuta Matsumura (20)

PDF
「自分のとこでは動くけど…」を無くす devcontainer
PDF
チーム開発で徐々にコード品質をあげていく取り組み
PDF
.NETのサポートポリシーのおさらい #csharptokyo
PDF
App Modernization for .NET
PDF
分かったうえではじめるCI/CD
PDF
VSCodeで始めるAzure Static Web Apps開発
PDF
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
PDF
Azure の ID 管理サービスに LINE ログインを組み込もう
PDF
Blazor Server テンプレート解説
PDF
改めて C# でできることを振り返る
PDF
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
PDF
忙しい人のための .NET Conf 2019 まとめ
PDF
.NET Conf の歩き方
PDF
PHPカンファレンス福岡2019 閉会式
PDF
PHPカンファレンス福岡2019 開会式
PDF
ASP.NET Core 2.x Identityについて
PDF
.NET Coreのいろは
PDF
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
PDF
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
PDF
娘駆動開発で活躍するAzureのサーバーレスサービス
「自分のとこでは動くけど…」を無くす devcontainer
チーム開発で徐々にコード品質をあげていく取り組み
.NETのサポートポリシーのおさらい #csharptokyo
App Modernization for .NET
分かったうえではじめるCI/CD
VSCodeで始めるAzure Static Web Apps開発
オンライン中心だから地方のコミュニティも見てみませんか? - Fukuoka.NETの紹介
Azure の ID 管理サービスに LINE ログインを組み込もう
Blazor Server テンプレート解説
改めて C# でできることを振り返る
スタートアップ企業が実践するクラウドネイティブアプリケーションの開発手法
忙しい人のための .NET Conf 2019 まとめ
.NET Conf の歩き方
PHPカンファレンス福岡2019 閉会式
PHPカンファレンス福岡2019 開会式
ASP.NET Core 2.x Identityについて
.NET Coreのいろは
イケてる技術で品質を担保しつつスピード感のある開発を実現する冴えたやり方
サーバーレスの常識を覆す Azure Durable Functionsを使い倒す
娘駆動開発で活躍するAzureのサーバーレスサービス

復習も兼ねて!C#6.0-7.0

Editor's Notes

  • #11: 3/7にVisual Studio 2017が正式リリースされました。 今年でVisual Studioは20周年を迎えたそうです。 まずこれまでのVisual Studioを振り返ってみましょう。
  • #14: VSファミリーのアイコンセットも新しくなりました。左から順に、 ・これまでのVSのアイコン ・VS2017のアイコン ・Visual Studio Team Serviecsのアイコン ・Visual Studio Blendのアイコン ・Visual Studio Mobile Centerのアイコン
  • #15: 最小構成で600MBとかなり圧縮されました。そのためVSのインストールが数分で終わるようになりました。 またインストール構成もワークロードに合わせて設定できるようになりました。
  • #16: VS2015の頃から充実していましたが、VS2017で更に充実したようです。 この他にもXAMLツールや解析系ツールも提供されています。
  • #17: 最小構成で600MBとかなり圧縮されました。そのためVSのインストールが数分で終わるようになりました。 またインストール構成もワークロードに合わせて設定できるようになりました。
  • #18: ということでC#7.0の新機能について紹介します。
  • #20: 前バージョン「6.0」で追加された機能をおさらいしましょう。
  • #29: ということでC#7.0の新機能について紹介します。