.NET Core 2.x 時代の C#

信之 岩永
信之 岩永Microsoft MVP
日本の第一人者が語る!
C# の現状と今後への展望
「.NET Core 2.x 時代の C#」
AD19
今日のテーマ
去年のde:codeで話したこと
今日のテーマ
った
すなわち、今年
その他、去年話したこと
既存機能
最近出たて
将来の話
.NET Core
.NET Coreも「生みの苦しみ」の時期を抜けた
.NET Core
昔: .NET Core 1.0の頃
.NET Framework
.NET Core
移植済み
Windows依存強
•レジストリー
•Drawing
•ODBC
マイナー機能
移植しない
•UWP XAML
•WPF
新規実装
今: .NET Core 2.0~2.1
Windows
Compatibility
Pack
マイナー機能も大体移植
.NET Framework
移植しない
•UWP XAML
•WPF
.NET Core
移植済み
新規実装
• 残ってるのはGUIくらい
• GUIは今後もクロスプラット
フォームにはならない(でか
すぎて無理)
• でも、こっちにしかない機能
がある限り、サポートは絶対
今: .NET Core 2.0~2.1
Windows
Compatibility
Pack
マイナー機能も大体移植
.NET Framework
移植しない
•UWP XAML
•WPF
.NET Core
移植済み
新規実装
• 新機能はまず.NET Coreで実装
• 今のところ.NET Frameworkに「移植」作
業してる
• 移植作業もしんどい
• パフォーマンスはCoreだけが向上して
たり
• .NET Frameworkはside by sideじゃなくて
今: .NET Core 2.0~2.1
Windows
Compatibility
Pack
マイナー機能も大体移植
.NET Framework
移植しない
•UWP XAML
•WPF
.NET Core
移植済み
新規実装
• Windows依存が強い機能も.NET Coreに移
植
• 一部はどのプラットフォームでも動く
• 一部はWindows限定
• APIだけがある。呼び出すと実行時例外https://blogs.msdn.microsoft.com/dotnet/2017/11/16/announcing-the-windows-compatibility-pack-for-net-core/
• RuntimeInformation.IsOSPlatform でif分岐必要
• コンパイル時に呼び出し可能かどうかを調べるアナライ
ザーあり
将来: .NET Core 3.0
Windows
Compatibility
Pack
GUIも.NET Core上に
•UWP XAML
•WPF
.NET Core
新規実装
• あくまで.NET Core上にWindows限定機能
が載ってるだけ(クロスプラットフォームで
は動かない)
• GUIでも.NET Coreの恩恵を受けたい
• パフォーマンス向上
• side by sideインストール
ML.NET
•機械学習
将来: .NET Core 3.0
パフォーマンス
標準ライブラリの実装改善(1)
if ((uint)x < length)
元 後
if (0 <= x && x < length)
標準ライブラリの実装改善(2)
if (9割方true)
短い処理
else
長い処理をメソッド抽出
();
元 後
if (9割方true)
短い処理
else
長い処理
JIT intrinsics (1)
enum A { X = 1, Y = 2 }
A a = A.X;
a.HasFlag(A.Y);
IL_0002: ldloc.0
IL_0003: box A
IL_0008: ldc.i4.2
IL_0009: box A
IL_000e: call HasFlag
ボックス化が起きて重たいの
で有名
※ intrinsics: 「内在的な」って意味の単語。この場合「中に組み込まれてる処理」くらいの意味。
JIT intrinsics (2)
interface I { void M(); }
struct S : I { void I.M() { } }
S s = default;
((I)s).M();
明示的実装
その呼び出
し
IL_0002: initobj S
IL_0008: ldloc.0
IL_0009: box S
IL_000e: callvirt M
これもボックス化を
起こす
Hardware intrinsics
if(X86.Sse.IsSupported)
{
var c = X86.Sse.Add(a, b);
}
if(Arm64.Simd.IsSupported)
{
var c = Arm64.Simd.Add(a, b);
}
現在の環境でこの命令セットが使える
かどうか
x86 CPUのADDPS命令に
展開
ARM64のADD命令に展
開
Hardware intrinsics
ランタイムの修正が必須な機能
「需要があるのはわ
かる」
「実装もそんなに難しく
ない」
「でも、ランタイムに手を入れないといけないか
ら無理」
ジェネリック属性
class SomeAttribute<T> : Attribute { }
[Some<string>]
class Target { }
インターフェイスのデフォルト メソッド
interface I<T>
{
T this[int index] { get; }
public T First() => this[0];
}
C#マイナー リリース
小さく、高頻度にリリース
C#の小数点リリース
スケジュール感
de:code
VS 16.0
(未定/推定)
C# 8.0
VS 15.8
(未定/推定)
build
マイナー リリース
小分けの例1: タプル
var (x, y) = (1, 2);
• 複数の値をひとまとめに
• 多値戻り値とかに使える
var (x, y) = (1, 2);
var t = (x, y);
WriteLine(t.Item1);
7.0時点では
「Item1」に
小分けの例1: タプル
var (x, y) = (1, 2);
var t = (x, y);
WriteLine(t.x);
タプル要素名を決
定
タプルを作るときに渡したx,
yから
var (x, y) = (1, 2);
WriteLine((x, y) == (1, 2)); • タプル同士を==で比較
• メンバーごとに==を&&で繋
いだのと同じ結果
小分けの例2: ref
ref int M(ref int x)
{
ref var r = ref x;
return ref r;
}
参照でもらったも
のを
ローカルで参照
して
戻り値で返
す
unsafe struct Pointer
{
int* p;
public ref int this[int i] => ref p[i];
}
nativeコード、unsafeコードとのつなぎに便
利だったり
小分けの例2: ref
ref readonly int M(in int x)
{
ref readonly var r = ref x;
// r = 1; みたいな書き換えができ
ない
return ref r;
}
• 書き換えはできない参照を作れ
る
• ref readonly
• 引数の場合はin (out引数との対
比)
小分けの例2: ref
struct Vector
{
public double W;
public double X;
public double Y;
public double Z;
public static Vector operator +(in Vector p, in Vector q)
=> ...;
}
合計64バイトあって
コピーするにはちょっ
と大きい
• コピーを避けて使える
• 不用意に書き換えられない保証
あり
• 演算子にも使える
小分けの例2: ref
int x = 1, y = 2;
ref var r = ref x;
r = 10; // x が書き換わ
る
r = ref y;
r = 20; // y が書き換わ
る
「何を参照するか」自体を書
き換え
リリースが早くなって
楽に作れて需要の高いものだけ
先に
バグの例1: defaultリテラル(C# 7.1)
Dictionary<string, string> table
= default(Dictionary<string, string>);
Dictionary<string, string> table = default;
バグの例1: defaultリテラル(C# 7.1)
void M(int? x = default) { }
int?の規定値はnullなので、当然、nullであ
るべき
• VS 15.3(リリース時点) : 0になってた
• VS 15.4(修正版) : nullに
バグの例2: in引数(C# 7.2)
// 2変数、既定値付き
static void M(in int x = 0, in int y = 0) => WriteLine(y);
// 1変数だけ値を渡す
static void Main() => M(1);
yには0が入ってほしい
• VS 15.5(リリース時点) : なぜかnull参照
例外発生
• VS 15.6で修正
バグの例2: in引数(C# 7.2)
class X
{
// クラスに対して in 引数
static void S(in X x) => WriteLine(x.ToString());
// in 引数相手に this を渡す
void M() => S(this);
}
• VS 15.5(リリース時点) :
ExecutionEngineException発生
• VS 15.6(修正版)で修正
リリースが早くなっているので
パフォーマンス
パフォーマンスを上げるためのライブラリ・言語機
能
C#でパフォーマンス?
… 7B 0D 0A 20 20 22 69 64 22 3A 20 31 2C 0D 0A 20 20 22 6E 61 6D 65 22 3A 20 22 F0 9F 91 A6 F0 9F 8F BD 22 0D 0A 7D …
7B 0D 0A 20 20 22 69 64 22 3A 20 31 2C 0D 0A 20 20 22 6E 61 6D 65 22 3A 20 22 F0 9F 91 A6 F0 9F 8F BD 22 0D 0A 7D
Stream.Read(byte[] buffer, int offset, int count)
Encoding.GetString(byte[] bytes)
… 22 00 69 00 64 00 22 00 3A 00 20 00 31 00 2C 00 0D 00 0A 00 20 00 20 00 22 00 6E 00 61 00 6D 00 65 00 22 00 3A 00 20 00 …
string.Substring string.Substring
31 00
1
22 00 3D D8 66 DC 3C D8 FD DF 22 00
"👦🏽"
UTF-8
UTF-16
… 7B 0D 0A 20 20 22 69 64 22 3A 20 31 2C 0D 0A 20 20 22 6E 61 6D 65 22 3A 20 22 F0 9F 91 A6 F0 9F 8F BD 22 0D 0A 7D …
Utf8String Utf8String Utf8String
1 "👦🏽"
直接intにParse
すればヒープ不
要
ToString時に
初めてヒープ確
保
Substring
この辺りがま
だ
ちょっと道半
ば
C# 7.0
struct A
{
int[] array;
ref int First => ref array[0];
}
unsafe struct B
{
int* pointer;
ref int First => ref pointer[0];
}
戻り値を参照にで
きる
unsafeなものも返
せる
ref int M(ref int x) => ref x;
ref int N()
{
int x = 0;
return ref x;
}
外からもらったものは返
せる
中のものは返せ
ない
C# 7.2
Span<int> M(Span<int> x) => x;
Span<int> N()
{
Span<int> x = stackallock int[4];
return x;
}
外からもらったものは返
せる
中のものは返せ
ない
Span<T>で受け取るなら、
unsafeなしでstackallockが使え
る
C# 7.3
Span<int> x = stackallock int[] { 1, 2, 3 };
Span<int> y = stackallock[] { 1, 2, 3 };
Span<int> x = stackallock[] { 1, 2, 3 };
unsafe
{
fixed (int* p = x) { }
}
System.IO.Pipelines
Span<T>を前提にしたI/O
int Read(byte[] buffer, int offset, int count)
int Read(Span<int> buffer)
https://blogs.msdn.microsoft.com/dotnet/2018/04/18/performance-improvements-in-net-core-2-1/
Span<T>による最適化
UTF-8を前提にした文字列処理
C# その他の機能
C# 7.3: ここまでのテーマにもれた機能もいくつか紹
介
C# 8.0: 少し先の話も
C# 7.3: オーバーロード解決の改善
static void M<T>(this T x) where T : class { }
static void M<T>(this ref T x) where T : struct { }
static void X(string s, int i)
{
s.M();
i.M();
}
前までは呼び分けできな
かった
型制約違い
C# 7.3: ジェネリック型制約の追加
static void E<T>(this T x)
where T : System.Enum { }
static void D<T>(this T x)
where T : System.Delegate { }
static void U<T>(this T x)
where T : unmanaged { }
列挙型だけを受け付
ける
デリゲート型だけを受け
付ける
ポインター化可能な型だけを受け
付ける
マイナー/メジャー並行開発
C# 7.0 C# 7.1 C# 7.2 C# 7.3
null許容参照型
再帰パターン
range
async stream
インターフェイスのデフォルト実装
タプル改善 ref改善 タプル改善
ref改善
C# 8.0
タプル
ref
パターン
https://github.com/dotnet/csharplang/wiki/Nullable-Reference-Types-Preview
https://github.com/dotnet/csharplang/wiki/vNext-Preview
8.0プレビュー、はじめました
C# 8.0: null許容参照型
int M(string s)
{
return s.Length;
}
int N(string? s)
{
var x = s.Length;
if (s == null) return -1;
return s.Length;
}
単にこう書くと非
null
参照型でも、?でnull許容
に
nullチェックがないので
警告
nullチェックより後なの
でOK
既存コードを壊さないために
• オプションでモード切替可能
に
• null、非null、「未指定」
• 既存コードは「未指定」扱
いでコード解析する
C# 8.0: 再帰パターン
int M(object obj)
{
switch (obj)
{
case int i: return i;
case string s: return s.Length;
case Point (var x, var y): return x * y;
case Point { X : var x, Y : var y }: return X * Y;
}
throw new IndexOutOfRangeException();
}
int M(object obj)
=> obj switch
{
case int i => i,
case string s => s.Length,
case Point (var x, var y) => x * y,
case Point { X : var x, Y : var y } => X * Y,
_ => throw new IndexOutOfRangeException()
};
switch式
C# 8.0: Range
var array = new[] { 1, 2, 3, 4, 5 };
var x = array[1..3]; // 1以上、3未満
var x = array[1..^1]; // 1~末尾から1
0 1 2 3 4
{ 1, 2, 3, 4, 5 }
0 1 2 3 4
{ 1, 2, 3, 4, 5 }
C# 8.0: async stream
async IAsyncEnumerator<int> MAsync()
{
for (int i = 0; i < 5; i++)
{
await Task.Delay(1);
yield return i;
}
}
foreach await (var x in MAsync())
{
}
まとめ
© 2018 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
1 de 60

Recomendados

C# 7.2 with .NET Core 2.1 por
C# 7.2 with .NET Core 2.1C# 7.2 with .NET Core 2.1
C# 7.2 with .NET Core 2.1信之 岩永
6K vistas41 diapositivas
C# 8.0 Preview in Visual Studio 2019 (16.0) por
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)信之 岩永
4.5K vistas49 diapositivas
Orange Cube 自社フレームワーク 2015/3 por
Orange Cube 自社フレームワーク 2015/3Orange Cube 自社フレームワーク 2015/3
Orange Cube 自社フレームワーク 2015/3信之 岩永
22.8K vistas79 diapositivas
C# 9.0 / .NET 5.0 por
C# 9.0 / .NET 5.0C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0信之 岩永
2.6K vistas64 diapositivas
C#や.NET Frameworkがやっていること por
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること信之 岩永
60K vistas167 diapositivas
今日からできる!簡単 .NET 高速化 Tips por
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
35.1K vistas53 diapositivas

Más contenido relacionado

La actualidad más candente

Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京 por
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京hecomi
10.9K vistas151 diapositivas
C# 8.0 非同期ストリーム por
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム信之 岩永
11.2K vistas63 diapositivas
知って得するC# por
知って得するC#知って得するC#
知って得するC#Shota Baba
9.7K vistas50 diapositivas
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines por
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesShintarou Okada
13.1K vistas133 diapositivas
Inside FastEnum por
Inside FastEnumInside FastEnum
Inside FastEnumTakaaki Suzuki
4.8K vistas40 diapositivas
基礎からのCode Contracts por
基礎からのCode Contracts基礎からのCode Contracts
基礎からのCode ContractsYoshifumi Kawai
14.1K vistas35 diapositivas

La actualidad más candente(20)

Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京 por hecomi
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi 10.9K vistas
C# 8.0 非同期ストリーム por 信之 岩永
C# 8.0 非同期ストリームC# 8.0 非同期ストリーム
C# 8.0 非同期ストリーム
信之 岩永11.2K vistas
知って得するC# por Shota Baba
知って得するC#知って得するC#
知って得するC#
Shota Baba9.7K vistas
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines por Shintarou Okada
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada13.1K vistas
基礎からのCode Contracts por Yoshifumi Kawai
基礎からのCode Contracts基礎からのCode Contracts
基礎からのCode Contracts
Yoshifumi Kawai14.1K vistas
C#/.NETがやっていること 第二版 por 信之 岩永
C#/.NETがやっていること 第二版C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
信之 岩永39.4K vistas
動的なILの生成と編集 por terurou
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集
terurou8K vistas
C++でCプリプロセッサを作ったり速くしたりしたお話 por Kinuko Yasuda
C++でCプリプロセッサを作ったり速くしたりしたお話C++でCプリプロセッサを作ったり速くしたりしたお話
C++でCプリプロセッサを作ったり速くしたりしたお話
Kinuko Yasuda33.5K vistas
Hello Dark-Side C# (Part. 1) por Yuto Takei
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei1.2K vistas
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜 por Teppei Sato
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Teppei Sato21.4K vistas
プログラミング .NET Framework 第4版 por 信之 岩永
プログラミング .NET Framework 第4版プログラミング .NET Framework 第4版
プログラミング .NET Framework 第4版
信之 岩永6.4K vistas
C#とILとネイティブと por 信之 岩永
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
信之 岩永26.2K vistas
Code Contracts in .NET 4 por 信之 岩永
Code Contracts in .NET 4Code Contracts in .NET 4
Code Contracts in .NET 4
信之 岩永15.9K vistas

Similar a .NET Core 2.x 時代の C#

C++0x総復習 por
C++0x総復習C++0x総復習
C++0x総復習道化師 堂華
4.9K vistas170 diapositivas
C++0x 言語の未来を語る por
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語るAkira Takahashi
1.7K vistas40 diapositivas
わんくま同盟大阪勉強会#61 por
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61TATSUYA HAYAMIZU
957 vistas66 diapositivas
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」 por
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」de:code 2017
1.4K vistas56 diapositivas
C++ tips4 cv修飾編 por
C++ tips4 cv修飾編C++ tips4 cv修飾編
C++ tips4 cv修飾編道化師 堂華
4K vistas48 diapositivas
T69 c++cli ネイティブライブラリラッピング入門 por
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門伸男 伊藤
5.2K vistas65 diapositivas

Similar a .NET Core 2.x 時代の C#(20)

C++0x 言語の未来を語る por Akira Takahashi
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
Akira Takahashi1.7K vistas
わんくま同盟大阪勉強会#61 por TATSUYA HAYAMIZU
わんくま同盟大阪勉強会#61わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU957 vistas
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」 por de:code 2017
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
de:code 20171.4K vistas
T69 c++cli ネイティブライブラリラッピング入門 por 伸男 伊藤
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤5.2K vistas
ぱっと見でわかるC++11 por えぴ 福田
ぱっと見でわかるC++11ぱっと見でわかるC++11
ぱっと見でわかるC++11
えぴ 福田1.6K vistas
組み込みでこそC++を使う10の理由 por kikairoya
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya27K vistas
NumPyが物足りない人へのCython入門 por Shiqiao Du
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du36.9K vistas
Cython intro prelerease por Shiqiao Du
Cython intro prelereaseCython intro prelerease
Cython intro prelerease
Shiqiao Du1.8K vistas
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~ por Fujio Kojima
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
Fujio Kojima787 vistas
競技プログラミングのためのC++入門 por natrium11321
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321 32.9K vistas
中3女子が狂える本当に気持ちのいい constexpr por Genya Murakami
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami30.5K vistas
Python physicalcomputing por Noboru Irieda
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
Noboru Irieda1.5K vistas
C++0x in programming competition por yak1ex
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
yak1ex1.8K vistas
Python standard 2022 Spring por anyakichi
Python standard 2022 SpringPython standard 2022 Spring
Python standard 2022 Spring
anyakichi218 vistas

Más de 信之 岩永

YouTube ライブ配信するようになった話 por
YouTube ライブ配信するようになった話YouTube ライブ配信するようになった話
YouTube ライブ配信するようになった話信之 岩永
4.3K vistas37 diapositivas
C# コンパイラーの書き換え作業の話 por
C# コンパイラーの書き換え作業の話C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話信之 岩永
2.5K vistas54 diapositivas
Unicode文字列処理 por
Unicode文字列処理Unicode文字列処理
Unicode文字列処理信之 岩永
2.9K vistas80 diapositivas
C# 8.0 null許容参照型 por
C# 8.0 null許容参照型C# 8.0 null許容参照型
C# 8.0 null許容参照型信之 岩永
2.9K vistas56 diapositivas
async/await のしくみ por
async/await のしくみasync/await のしくみ
async/await のしくみ信之 岩永
19.8K vistas41 diapositivas
Unityで使える C# 6.0~と .NET 4.6 por
Unityで使える C# 6.0~と .NET 4.6Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6信之 岩永
21.4K vistas38 diapositivas

Más de 信之 岩永(17)

YouTube ライブ配信するようになった話 por 信之 岩永
YouTube ライブ配信するようになった話YouTube ライブ配信するようになった話
YouTube ライブ配信するようになった話
信之 岩永4.3K vistas
C# コンパイラーの書き換え作業の話 por 信之 岩永
C# コンパイラーの書き換え作業の話C# コンパイラーの書き換え作業の話
C# コンパイラーの書き換え作業の話
信之 岩永2.5K vistas
Unicode文字列処理 por 信之 岩永
Unicode文字列処理Unicode文字列処理
Unicode文字列処理
信之 岩永2.9K vistas
C# 8.0 null許容参照型 por 信之 岩永
C# 8.0 null許容参照型C# 8.0 null許容参照型
C# 8.0 null許容参照型
信之 岩永2.9K vistas
async/await のしくみ por 信之 岩永
async/await のしくみasync/await のしくみ
async/await のしくみ
信之 岩永19.8K vistas
Unityで使える C# 6.0~と .NET 4.6 por 信之 岩永
Unityで使える C# 6.0~と .NET 4.6Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6
信之 岩永21.4K vistas
それっぽく、適当に por 信之 岩永
それっぽく、適当にそれっぽく、適当に
それっぽく、適当に
信之 岩永1.8K vistas
.NET Compiler Platform por 信之 岩永
.NET Compiler Platform.NET Compiler Platform
.NET Compiler Platform
信之 岩永36.1K vistas
今から始める、Windows 10&新.NETへの移行戦略 por 信之 岩永
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永30.4K vistas
今から始める、Windows 10&新.NETへの移行戦略 por 信之 岩永
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
信之 岩永2.2K vistas
C# design note sep 2014 por 信之 岩永
C# design note sep 2014C# design note sep 2014
C# design note sep 2014
信之 岩永12.8K vistas
非同期処理の基礎 por 信之 岩永
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
信之 岩永57.3K vistas
Anders Hejlsberg Q & A por 信之 岩永
Anders Hejlsberg Q & AAnders Hejlsberg Q & A
Anders Hejlsberg Q & A
信之 岩永15.9K vistas
C#マスコット(公開用) por 信之 岩永
C#マスコット(公開用)C#マスコット(公開用)
C#マスコット(公開用)
信之 岩永4K vistas

Último

私のMicrosoft Azure 2023 por
私のMicrosoft Azure 2023私のMicrosoft Azure 2023
私のMicrosoft Azure 2023Ryuji Iwata
5 vistas36 diapositivas
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 por
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PC Cluster Consortium
29 vistas36 diapositivas
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 por
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
110 vistas26 diapositivas
光コラボは契約してはいけない por
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
30 vistas17 diapositivas
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可 por
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可Hitachi, Ltd. OSS Solution Center.
13 vistas22 diapositivas
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 por
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PC Cluster Consortium
68 vistas12 diapositivas

Último(6)

私のMicrosoft Azure 2023 por Ryuji Iwata
私のMicrosoft Azure 2023私のMicrosoft Azure 2023
私のMicrosoft Azure 2023
Ryuji Iwata5 vistas
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 por PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
光コラボは契約してはいけない por Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga30 vistas
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 por PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」

.NET Core 2.x 時代の C#

Notas del editor

  1. そりゃまあ、出自がSilverlight→UWPなので。
  2. https://blogs.msdn.microsoft.com/dotnet/2017/11/16/announcing-the-windows-compatibility-pack-for-net-core/
  3. 退役って言っても、既存のものをわざわざ移せというものでもない。サポートはまあ続いてる。
  4. 実際、Paint.NETをバイナリそのままで動かしてみてるって。それで発見したスレッドのバグあり(Core 2.1で修正済み)。