SlideShare a Scribd company logo
1 of 54
Download to read offline
C#勉強会
~ C#9の新機能 ~
2021/03/22
小島 富治雄
前提条件とゴール
2
『C#の新機能勉強会 ~C#7、8の新機能を活用して速く安全なプログラムを書こう~』
前回は C#7、8
3
【参考】 C# 7~8の新機能の例
4
タプル
値型 (struct)
パターン マッチング
参照型 (class)
その他
アジェンダ
1. C# の歴史と C# 9.0
6
C# の歴史
C# Ver. 主な新機能 登場時期 .NET Visual Studio
1.0, 1.1, 1.2 オブジェクト指向 2002年 .NET Framework 1.0,1.1 .NET, .NET 2003
2.0 ジェネリック 2005年 .NET Framework 2.0 2005
3.0 関数型 2007年 .NET Framework 2.0, 3.0,
3.5
2008, 2010
4.0 動的 2010年 .NET Framework 4 2010
5.0 非同期 2012年 .NET Framework 4.5 2012, 2013
6.0 Roslyn (コンパイラーをC#で実装しオープンソース化) 2015年 .NET Framework 4.6
.NET Core 1.0
2015
7.0, 7.1, 7.2,
7.3
パターン マッチング、値型に関する改良 2017年 .NET Framework 4.6.2, 4.7,
4.7.1, 4.7.2
.NET Core 2.0, 2.1, 2.2
2017
8.0 値型、参照型に関する改良 2019年 .NET Core 3.0 2019 Ver.16.3
9.0 パターン マッチングの改良、record 型、
ソースコード ジェネレーター
2020年 .NET 5.0 2019 Ver.16.8
C# 7~9
8
C# Ver. Visual Studio
7.0 Visual Studio 2017
7.1 Visual Studio 2017 バージョン 15.3
7.2 Visual Studio 2017 バージョン 15.5
7.3 Visual Studio 2017 バージョン 15.7
8.0 Visual Studio 2019 16.3
9.0 Visual Studio 2019 16.8
.NET と C# の既定のバージョン
9
ターゲット フレーム バージョン C#の既定のバージョン
.NET 5.x C# 9.0
.NET Core 3.x C# 8.0
.NET Core 2.x C# 7.3
.NET Standard 2.1 C# 8.0
.NET Standard 2.0 C# 7.3
.NET Standard 1.x C# 7.3
.NET Framework all C# 7.3
プロジェクト ファイルでの C#のバージョン指定
10
<Project ……>
<PropertyGroup>
<OutputType>……</OutputType>
<TargetFramework>……</TargetFramework>
<!--……中略……-->
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
<!--……中略……-->
</Project>
LangVersion 説明
preview 最新プレビュー バージョン
latest 最新リリース バージョン
(マイナー バージョンを含む)
latestMajor 最新リリースの
メジャー バージョン
9.0 C# 9.0
C# 9.0
11
https://dotnet.microsoft.com/download/dotnet/5.0
https://dotnet.microsoft.com/download/dotnet/thank-you/sdk-5.0.200-windows-x64-installer
開発環境
12
2. C# 9.0 の新機能
13
C# 9.0 の新機能
14
※ 目玉
サンプル コード
C# 9.0 の新機能
15
【準備】 Visual Studio でプロジェクトを新規作成
16
17
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
【準備】 Visual Studio でプロジェクトを新規作成
トップ レベル ステートメント
18
using System.Linq;
using static System.Console;
Enumerable.Range(1, 100)
.Select(i => (i % 3, i % 5) switch {
(0, 0) => "FizzBuzz" ,
(0, _) => "Fizz" ,
(_, 0) => "Buzz" ,
_ => i.ToString()
})
.ToList()
.ForEach(WriteLine);
トップレベルステートメントサンプル.cs | GitHub
record
19
public record RStaff(int Id, string Name);
public record RStaff2
{
public int Id { get; init; }
public string Name { get; init; } = "";
}
public record RStaff3
{
public int Id { get; private set; }
public string Name { get; private set; } = "";
public RStaff3(int id, string name) => (Id, Name) = (id, name);
}
recordサンプル.cs | GitHub
record
20
init-only プロパティ
21
class Point3
{
public double X { get; init; } = 0.0;
public double Y { get; init; } = 0.0;
public Point3() {}
public Point3(double x, double y) => (X, Y) = (x, y);
}
initプロパティサンプル.cs | GitHub
ラムダ式の改良
22
button.Click += static (_, _) => ShowOK();
ラムダ式サンプル.cs | GitHub
パターンマッチングの追加
23
static bool IsLeapYear(int year) =>
(year % 400, year % 100, year % 4) is (0, _, _) or (_, not 0, 0);
パターンマッチングサンプル.cs | GitHub
new式で型を省略
24
// フィールド
List<Staff> staffs = new();
// プロパティ
public Staff Staff { get; set; } = new();
new式で型を省略サンプル.cs | GitHub
拡張メソッド GetEnumerator
25
static class StaffListExtensions
{
public static IEnumerator<Staff> GetEnumerator(this StaffList @this)
{
for (var index = 0; index < @this.Count; index++)
yield return @this[index];
}
}
拡張メソッドGetEnumeratorサンプル.cs | GitHub
ネイティブサイズ整数
26
nint n1 = -1;
nuint n2 = 1U;
ネイティブサイズ整数サンプル.cs | GitHub
共変の戻り値の型の改良
27
class Base
{
public virtual IEnumerable<int> GetCollection() { return null; }
}
interface IBase
{
IEnumerable<int> GetCollection() { return null; }
}
class Derived : Base, IBase
{
// 共変の戻り値の型が使用可
public override List<int> GetCollection() { return new List<int>(); } // C#9
}
共変の戻り値の型サンプル.cs | GitHub
3. ソースコード ジェネレーターを体験してみよう
28
ソースコード ジェネレーター
29
パーシャル メソッドの改良
30
// 手書きのクラス
partial class PartialClass
{
private partial string GetMessage(); // not implemented here.
public void ShowMessage() => Console.WriteLine(GetMessage());
}
// ソースコード ジェネレーターで作成されるクラス
partial class PartialClass
{
private partial string GetMessage() => "Hello source generator!";
}
Partialメソッドサンプル.cs | GitHub
ソースコード ジェネレーターの作成
31
Visual Studio でプロジェクトを新規作成
32
Visual Studio でプロジェクトを新規作成
33
プロジェクトにパッケージを追加
34
プロジェクトにパッケージを追加
35
プロジェクトにパッケージを追加
36
HelloSourceGenerator.csproj
プロジェクト ファイルを変更
37
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.9.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.2" PrivateAssets="all" />
</ItemGroup>
</Project>
クラス名変更
38
HelloSourceGenerator.cs | GitHub
ソースコード ジェネレーターの作成
39
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Text;
using System.Text;
namespace HelloSourceGenerator
{
[Generator]
public class HelloSourceGenerator : ISourceGenerator
{
public void Execute(GeneratorExecutionContext context)
{
context.AddSource("generated.cs", SourceText.From(text: @"
namespace HelloSourceGeneratorSample
{
public class Sample
{
public const int Id = 1;
}
partial class PartialClass
{
private partial string GetMessage() => ""Hello source
generator!"";
}
}", encoding: Encoding.UTF8));
}
public void Initialize(GeneratorInitializationContext context)
{ }
}
}
ソースコード ジェネレーターを利用する側
40
ソースコード ジェネレーターを利用する側
41
ソースコード ジェネレーターを利用する側
42
ソースコード ジェネレーターを利用する側
43
HelloSourceGeneratorSample.csproj
プロジェクト ファイルを変更
44
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Analyzer Include="$(SolutionDir)/HelloSourceGenerator/bin/Debug/netstandard2.0/HelloSourceGenerator.dll" />
</ItemGroup>
</Project>
Program.cs を書き換え
45
using System;
namespace HelloSourceGeneratorSample
{
class Program
{
static void Main(string[] args)
{
var id = Sample.Id;
// not implemented here.
Console.WriteLine(id);
PartialClass partialClass = new();
partialClass.ShowMessage();
}
}
partial class PartialClass
{
private partial string GetMessage();
// not implemented here.
public void ShowMessage()
=> Console.WriteLine(GetMessage());
}
}
実行結果
46
1
Hello source generator!!
リビルド
SourceTreeSourceGenerator.cs | GitHub
roslyn-sdk/samples/CSharp/SourceGenerators | GitHub.com)
ソースコード ジェネレーターへの追加
47
HelloSourceGeneratorSample の Main() を書き換え
48
using System;
namespace HelloSourceGeneratorSample
{
class Program
{
static void Main(string[] args)
{
SourceTreeGenerated.SourceTree.Show();
}
}
partial class PartialClass
{
private partial string GetMessage();
// not implemented here.
public void ShowMessage()
=> Console.WriteLine(GetMessage());
}
}
実行結果
49
This is generated code!
The following syntax trees existed in the compilation that
created this program:
- Program.cs
- .NETCoreApp,Version=v5.0.AssemblyAttributes.cs
- HelloSourceGeneratorSample.AssemblyInfo.cs
リビルド
AutoNotifyGenerator. cs | GitHub
roslyn-sdk/samples/CSharp/SourceGenerators | GitHub.com)
ソースコード ジェネレーターへの追加
50
HelloSourceGeneratorSample の Main() を書き換え
51
using System;
using AutoNotify;
namespace HelloSourceGeneratorSample
{
class Program {
static void Main(string[] args)
{
Point point = new();
point.PropertyChanged += (point, _) => {
var p = point as Point;
Console.WriteLine($"The point has
changed: {p?.X}");
};
point.X = 100;
point.X = 200;
}
}
partial class PartialClass
{
private partial string GetMessage();
// not implemented here.
public void ShowMessage()
=> Console.WriteLine(GetMessage());
}
partial class Point
{
[AutoNotify]
private int _x;
}
}
実行結果
52
The point has changed: 100
The point has changed: 200
本日の内容
C# 9.0 の新機能 - C# ガイド | Microsoft Docs
C# 9.0 の新機能 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C (ufcpp.net)
C# 9.0 on the record | .NET Blog
#145 Mads Torgersen, C# 9, Part 1 | no dogma podcast (bryanhogan.net)
#146 Mads Torgersen, C# 9, Part 2 – Listener Questions | no dogma podcast (bryanhogan.net)
The Future of C# | YouTube
参考文献
54

More Related Content

What's hot

【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
Unity Technologies Japan K.K.
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Akira Takahashi
 

What's hot (20)

研究生のためのC++ no.7
研究生のためのC++ no.7研究生のためのC++ no.7
研究生のためのC++ no.7
 
C++14 Overview
C++14 OverviewC++14 Overview
C++14 Overview
 
More C++11
More C++11More C++11
More C++11
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
 
メタプログラミング C#
メタプログラミング C#メタプログラミング C#
メタプログラミング C#
 
Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析Cloud TPU Driver API ソースコード解析
Cloud TPU Driver API ソースコード解析
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cython
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
 
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しようC# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
 
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
 
Objc lambda
Objc lambdaObjc lambda
Objc lambda
 
What is template
What is templateWhat is template
What is template
 
研究生のためのC++ no.4
研究生のためのC++ no.4研究生のためのC++ no.4
研究生のためのC++ no.4
 
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
 
Tensorflow dynamically loadable XLA plugin ソースコード解析
Tensorflow  dynamically loadable XLA plugin ソースコード解析Tensorflow  dynamically loadable XLA plugin ソースコード解析
Tensorflow dynamically loadable XLA plugin ソースコード解析
 
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
 

Similar to C#勉強会 ~ C#9の新機能 ~

What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
 
第2回デザインパターン資料
第2回デザインパターン資料第2回デザインパターン資料
第2回デザインパターン資料
gaaupp
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
Takuya Tsuchida
 
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Akira Inoue
 

Similar to C#勉強会 ~ C#9の新機能 ~ (20)

復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0復習も兼ねて!C#6.0-7.0
復習も兼ねて!C#6.0-7.0
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
 
第2回デザインパターン資料
第2回デザインパターン資料第2回デザインパターン資料
第2回デザインパターン資料
 
Spring と TDD
Spring と TDDSpring と TDD
Spring と TDD
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携cocos2d-xとネイティブ間の連携
cocos2d-xとネイティブ間の連携
 
CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8CEDEC 2013 Unity on Windows 8
CEDEC 2013 Unity on Windows 8
 
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
 
GoF デザインパターン 2009
GoF デザインパターン 2009GoF デザインパターン 2009
GoF デザインパターン 2009
 
Entity Framework
Entity FrameworkEntity Framework
Entity Framework
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
 
Roslyn による Visual Studio のアドイン
Roslyn による Visual Studio のアドインRoslyn による Visual Studio のアドイン
Roslyn による Visual Studio のアドイン
 
Teclab3
Teclab3Teclab3
Teclab3
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio Code
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
 
はじめてのCodeIgniter
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniter
 
Cocos2d xをさらにさわってみよう!
Cocos2d xをさらにさわってみよう!Cocos2d xをさらにさわってみよう!
Cocos2d xをさらにさわってみよう!
 
New Features in C# 10/11
New Features in C# 10/11New Features in C# 10/11
New Features in C# 10/11
 

More from Fujio Kojima

.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
Fujio Kojima
 

More from Fujio Kojima (20)

Burikaigi 2023「C# Live Coding!」 小島の分
Burikaigi  2023「C# Live Coding!」 小島の分Burikaigi  2023「C# Live Coding!」 小島の分
Burikaigi 2023「C# Live Coding!」 小島の分
 
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
 
.NET 6 時代のデスクトップ アプリケーション開発
.NET 6 時代のデスクトップ アプリケーション開発.NET 6 時代のデスクトップ アプリケーション開発
.NET 6 時代のデスクトップ アプリケーション開発
 
BuriKaigi 2022 「C# Live Coding!」 小島の分
BuriKaigi 2022 「C# Live Coding!」 小島の分BuriKaigi 2022 「C# Live Coding!」 小島の分
BuriKaigi 2022 「C# Live Coding!」 小島の分
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
 
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
 
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
 
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
 
機械学習 (AI/ML) 勉強会 #1 基本編
機械学習 (AI/ML) 勉強会 #1 基本編機械学習 (AI/ML) 勉強会 #1 基本編
機械学習 (AI/ML) 勉強会 #1 基本編
 
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
 
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
 
.NET MVP によるドキドキ・ライブコーディング! 小島の分
.NET MVP によるドキドキ・ライブコーディング! 小島の分.NET MVP によるドキドキ・ライブコーディング! 小島の分
.NET MVP によるドキドキ・ライブコーディング! 小島の分
 
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
 
HTML5 on ASP.NET
HTML5 on ASP.NETHTML5 on ASP.NET
HTML5 on ASP.NET
 
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
 
C# 6.0 Preview
C# 6.0 PreviewC# 6.0 Preview
C# 6.0 Preview
 
Microsoft .NET 入門
Microsoft .NET 入門Microsoft .NET 入門
Microsoft .NET 入門
 
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
 

Recently uploaded

Recently uploaded (10)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

C#勉強会 ~ C#9の新機能 ~