SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
C# 7.0 new features
Bill Chung
http://mvc.tw
 Bill Chung
 海角點部落
 專長:說故事
關於我
2
http://mvc.tw
大綱
 新增的數字表示法
 pattern matching
 expression-bodied
 throw expression
 local functions
 out 引數的新用法
 ValueTuple
 Deconstruct
 ref local and return
 ValueTask
3
http://mvc.tw
 二進位表示法
 在數字常值中使用底線 _ 當作數字分隔符號
新增的數字表示法
4
5
//二進位數字表示法
int i = 0b0010;
Console.WriteLine(i);
// 使用底線讓數字更清晰
int j = 100_000;
Console.WriteLine(j);
int k = 1_00;
Console.WriteLine(k);
int l = 0b0010_0000;
Console.WriteLine(l);
double d = 3.141_592_653;
Console.WriteLine(d);
http://mvc.tw
 加強 is 運算子
 加強 switch 敘述 (when)
pattern matching
6
以前你得要這樣寫
7
static void Main(string[] args)
{
int i = 10;
Execute(i);
Console.ReadLine();
}
private static void Execute(object value)
{
if (value is int)
{ Console.WriteLine((int)value); }
else
{ Console.WriteLine("not int"); }
}
現在你可以這麼寫
8
static void Main(string[] args)
{
int i = 10;
Execute(i);
Console.ReadLine();
}
private static void Execute(object value)
{
if (value is int x)
{ Console.WriteLine(x); }
else
{ Console.WriteLine("not int"); }
}
在 switch 上的運用
9
private static void InitialShape(IShape shape, double x, double y)
{
switch (shape )
{
case MyRectAngle s:
s.Height = x;
s.Width = y;
break;
case MyCircle s:
s.Radius = x;
break;
case null:
break;
}
}
在 switch 上加入 when
10
private static void Execute(object value)
{
switch (value)
{
case int x when x > 0 && x < 100:
Console.WriteLine($"x 是小整數 : {x}");
break;
case int x when x > 99 && x < 1000:
Console.WriteLine($"x 是大整數 : {x}");
break;
case int x:
Console.WriteLine($"x 超出範圍");
break;
case string x:
Console.WriteLine($"x 是字串 : {x}");
break;
default:
Console.WriteLine("不在 case 內");
break;
}
}
http://mvc.tw
 is 其實是 as
 結構型別會換成 Nullable<T>
 switch 和 when 會被 if 取代
 容易造成方法複雜度增加
編譯器玩了甚麼魔術
11
http://mvc.tw
 在 C# 6.0(包含) 以前的
 is
 會對變數只少做兩次存取
 as
 無法處理不可為 null 的型別
 當變數值為 null 的時候,無法分辨究竟是轉型失敗還是傳
進來的值就是 null
過去的 is 和 as 有甚麼缺點
12
http://mvc.tw
 在 C# 6.0 開始出現此形式的寫法。本來只用在 method
和 read only property。
 C# 7.0 將這個形式擴張到
 constructor
 finalizer
 getter and setter on property
 indexer
更狂的 expression-bodied members
13
14
public class MyCircle
{
private double _radius;
private string _name;
public double Radius
{
get => _radius;
set => this._radius = value;
}
public string Name
{
get => _name;
set => this._name = value ?? "就是這個圓";
}
public MyCircle() => _radius =2;
public double GetArea() =>
(_radius > 0) ? Math.PI * (Math.Pow(_radius, 2)) : 0;
}
http://mvc.tw
 以前 throw 是個單純的敘述(statement) 所以沒有辦法
直接放在運算式中使用
 在 C# 7.0 中新增了 throw 運算式(expression) 解決
了這個問題。
throw expression
15
16
public class MyCircle
{
private double _radius;
private string _name;
public double Radius
{
get => _radius;
set => _radius = value > 0 ? value : throw new ArgumentException();
}
public string Name
{
get => _name;
set => this._name = value ?? throw new ArgumentException();
}
}
http://mvc.tw
 改善只會被某個特定 method 呼叫的 method 到處躲來躲
去的問題。
 強化封裝性
 async / await 也能用。
local functions
17
沒有 local function 之前
18
static void Main(string[] args)
{
List<string> list1 = new List<string>() { "1", "2", "3", "4", "5" };
Display(list1);
List<string> list2 = new List<string>() { "A", "B", "C", "D", "E" };
Display(list2);
Console.ReadLine();
}
private static void Display(List<string> list)
{
foreach (var item in list)
{
Console.WriteLine(list);
}
}
使用 local function
19
static void Main(string[] args)
{
List<string> list1 = new List<string>() { "1", "2", "3", "4", "5" };
Display(list1);
List<string> list2 = new List<string>() { "A", "B", "C", "D", "E" };
Display(list2);
Console.ReadLine();
void Display(List<string> list)
{
foreach (var item in list)
{
Console.WriteLine(item);
}
}
}
還有一個超神奇的用法
20
static void Main(string[] args)
{
List<string> list1 = new List<string>() { "1", "2", "3", "4", "5" };
var list = list1;
Display();
List<string> list2 = new List<string>() { "A", "B", "C", "D", "E" };
list = list2;
Display();
Console.ReadLine();
void Display()
{
foreach (var item in list)
{
Console.WriteLine(item);
}
}
}
剛剛的 list 會變成甚麼?
21
[CompilerGenerated]
private struct <>c__DisplayClass0_0
{
public List<string> list;
}
[CompilerGenerated] internal static void <Main>g__Display0_0
(ref <>c__DisplayClass0_0 class_Ref1)
{
foreach (string str in class_Ref1.list)
{
Console.WriteLine(str);
}
}
http://mvc.tw
 只有一點小改變 -- 可以直接在呼叫時宣告 out 引數
out 引數的新用法
22
23
string s="123";
// 以前你要這樣寫
int i;
int.TryParse(s,out i);
Console.WriteLine(i);
// 現在你可以直接這樣寫
int.TryParse(s, out int j);
Console.WriteLine(j);
// ref 不能比照 out 使用
//Test(ref int y = 10);
http://mvc.tw
 ValueTuple 以泛型結構形式定義
 可以大幅簡化過去使用 Tuple<> 的麻煩
 以 nuget 套件的形式加入參考
ValueTuple
24
那一年,我們使用的 Tuple
25
static void Main(string[] args)
{
var data = GetSomthing();
Console.WriteLine($" {data.Item1} : {data.Item2}");
Console.ReadLine();
}
private static Tuple<int, string> GetSomthing()
{
int i = 100;
string s = "ABC";
return Tuple.Create(i, s);
}
ValueTuple 的各種宣告方式
26
ValueTuple<int, string> x1 = ValueTuple.Create<int, string>(8, "ABC");
Console.WriteLine($"(1) {x1.Item1} : {x1.Item2}");
var x2 = (8, "ABC");
Console.WriteLine($"(2) {x2.Item1} : {x2.Item2}");
var x3 = (length: 8, letters: "ABC");
Console.WriteLine($"(3) {x3.length} : {x3.letters}");
(int length, string letters) x4 = (8, "ABC");
Console.WriteLine($"(4) {x4.length} : {x4.letters}");
(int length, string letters) x5 = (first: 8, second: "ABC");
Console.WriteLine($"(5) {x5.length} : {x5.letters}");
八個泛型的多載
27
public struct ValueTuple<T1, T2, T3, T4, T5, T6, T7, TRest>
where TRest : struct
http://mvc.tw
 讓型別具有使用指派運算子,也就是 = ,把特定內容的值
指派給 ValueTuple 型別的變數。
Deconstruct
28
建立 Deconstruct 執行個體方法
29
class Program
{
static void Main(string[] args)
{
MyRectangle rect = new MyRectangle() { Width = 10, Height = 30 };
(int x, int y)= rect;
Console.WriteLine($"{x} -- {y}");
Console.ReadLine();
}
}
public class MyRectangle
{
public int Width { get; set; }
public int Height { get; set; }
public void Deconstruct(out int width, out int height)
{
width = this.Width;
height = this.Height;
}
}
Deconstruct 也可以用擴充方法形式
30
public class MyRectangle
{
public int Width { get; set; }
public int Height { get; set; }
}
public static class MyExtension
{
public static void Deconstruct
(this MyRectangle rect, out int width, out int height)
{
width = rect.Width;
height = rect.Height;
}
}
Deconstruct 一個有趣的小地方
31
MyRectangle rect = new MyRectangle() { Width = 5, Height = 60 };
(int x, int y) = rect;
Console.WriteLine($"{x} -- {y}");
Console.ReadLine();
(new MyRectangle() { Width = 5, Height = 60 })
.Deconstruct(out int x, out int y);
Console.WriteLine($"{x} -- {y}");
Console.ReadLine();
http://mvc.tw
 ref 的新變革
 在區域變數內直接取得變數指標
 在方法回傳值直接回傳變數指標
ref local and return
32
以前要操作變數指標是一件麻煩事
33
static void Main(string[] args)
{
int number = 100;
unsafe
{
int* p = &number;
Console.WriteLine(*p);
*p = 999;
Console.WriteLine(number);
}
Console.ReadLine();
}
現在你只要這麼做就行了
34
static void Main(string[] args)
{
int number = 100;
ref int p = ref number;
Console.WriteLine(p);
p = 999;
Console.WriteLine(number);
Console.ReadLine();
}
陣列處理 – 過去
35
static void Main(string[] args)
{
string[] data = new string[] { "鼠", "牛", "虎", "兔" };
int index = GetTigerIndex(data);
data[index] = "老虎";
Display(data);
Console.ReadLine();
}
private static int GetTigerIndex(string[] data)
{
return Array.IndexOf(data, "虎");
}
陣列處理 – ref return
36
static void Main(string[] args)
{
string[] data = new string[] { "鼠", "牛", "虎", "兔" };
ref string s = ref GetTiger(data);
s = "大老虎";
Display(data);
Console.ReadLine();
}
private static ref string GetTiger(string[] data)
{
return ref data[Array.IndexOf(data, "虎")];
}
http://mvc.tw
 ValueTask 以泛型結構形式定義
 以 nuget 套件的形式加入參考
ValueTask
37
38
async private static void Begin()
{
int x = await Execute();
Console.WriteLine(x);
}
async private static ValueTask<int> Execute()
{
await Task.Delay(5000);
return 300;
}
39
結構再度受到重視
http://mvc.tw
Blog 是記錄知識的最佳平台
40
https://dotblogs.com.tw
http://mvc.tw
Jetbrains 重構必備工具
41
https://www.jetbrains.com/resharper/
http://mvc.tw
OzCode 偵錯的魔法師
42
http://www.oz-code.com/
http://mvc.tw
業界師資、實戰教學
43
https://skilltree.my
謝謝各位
• 本投影片所包含的商標與文字皆屬原著作者所有。
• 本投影片使用的圖片皆從網路搜尋。
• 本著作係採用姓名標示-非商業性-相同方式分享 3.0 台灣授權。閱讀本授權條款,請到
http://creativecommons.org/licenses/by-nc-sa/3.0/tw/,或寫信至Creative Commons, 444 Castro
Street, Suite 900, Mountain View, California, 94041, USA.
h t t p s : / / m v c . t w

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Ch8 教學
Ch8 教學Ch8 教學
Ch8 教學
 
Python元組,字典,集合
Python元組,字典,集合Python元組,字典,集合
Python元組,字典,集合
 
C語言應用前置處理
C語言應用前置處理C語言應用前置處理
C語言應用前置處理
 
Python基本資料運算
Python基本資料運算Python基本資料運算
Python基本資料運算
 
C語言陣列與字串
C語言陣列與字串C語言陣列與字串
C語言陣列與字串
 
第4章函数
第4章函数第4章函数
第4章函数
 
第5章数组
第5章数组第5章数组
第5章数组
 
nodeMCU IOT教學02 - Lua語言
nodeMCU IOT教學02 - Lua語言nodeMCU IOT教學02 - Lua語言
nodeMCU IOT教學02 - Lua語言
 
Python learn guide
Python learn guidePython learn guide
Python learn guide
 
Chapter 5 array and struct
Chapter 5 array and structChapter 5 array and struct
Chapter 5 array and struct
 
Ch08
Ch08Ch08
Ch08
 
Ch7 範例
Ch7 範例Ch7 範例
Ch7 範例
 
Sql培训 (1)
Sql培训 (1)Sql培训 (1)
Sql培训 (1)
 
C语言学习100例实例程序
C语言学习100例实例程序C语言学习100例实例程序
C语言学习100例实例程序
 
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18
 
Python入門:5大概念初心者必備
Python入門:5大概念初心者必備Python入門:5大概念初心者必備
Python入門:5大概念初心者必備
 
Ch9
Ch9Ch9
Ch9
 
Ch07
Ch07Ch07
Ch07
 
Python程式設計 - 串列資料應用
Python程式設計 - 串列資料應用 Python程式設計 - 串列資料應用
Python程式設計 - 串列資料應用
 
Python程式設計 - 迴圈作業
Python程式設計 - 迴圈作業Python程式設計 - 迴圈作業
Python程式設計 - 迴圈作業
 

Similar a twMVC#27 | C# 7.0 新功能介紹

張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版逸 張
 
Use Lambdas in Android
Use Lambdas in AndroidUse Lambdas in Android
Use Lambdas in Androidkoji lin
 
Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答Justin Lin
 
基于Eclipse和hadoop平台应用开发入门手册
基于Eclipse和hadoop平台应用开发入门手册基于Eclipse和hadoop平台应用开发入门手册
基于Eclipse和hadoop平台应用开发入门手册Zhen Li
 
The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)jeffz
 
Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享晓锋 陈
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算建興 王
 
Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門吳錫修 (ShyiShiou Wu)
 
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7Justin Lin
 
Introduction to C++ over CLI
Introduction to C++ over CLIIntroduction to C++ over CLI
Introduction to C++ over CLI建興 王
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试lydiafly
 
107个常用javascript语句 oss 计算技术 - ossez info of tech
107个常用javascript语句   oss 计算技术 - ossez info of tech107个常用javascript语句   oss 计算技术 - ossez info of tech
107个常用javascript语句 oss 计算技术 - ossez info of techYUCHENG HU
 
C++工程实践
C++工程实践C++工程实践
C++工程实践Shuo Chen
 
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geekJohnson Gau
 

Similar a twMVC#27 | C# 7.0 新功能介紹 (20)

張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
張逸 - 研究所 / 轉學考計算機概論 、公職計算機概要 - 程式語言 - 試閱版
 
Use Lambdas in Android
Use Lambdas in AndroidUse Lambdas in Android
Use Lambdas in Android
 
Arduino程式快速入門
Arduino程式快速入門Arduino程式快速入門
Arduino程式快速入門
 
Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答Java SE 7 技術手冊 - 課後練習解答
Java SE 7 技術手冊 - 課後練習解答
 
基于Eclipse和hadoop平台应用开发入门手册
基于Eclipse和hadoop平台应用开发入门手册基于Eclipse和hadoop平台应用开发入门手册
基于Eclipse和hadoop平台应用开发入门手册
 
The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)The Evolution of Async Programming (GZ TechParty C#)
The Evolution of Async Programming (GZ TechParty C#)
 
Dev307
Dev307Dev307
Dev307
 
Ch10 習題
Ch10 習題Ch10 習題
Ch10 習題
 
Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享
 
認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算認識 C++11 新標準及使用 AMP 函式庫作平行運算
認識 C++11 新標準及使用 AMP 函式庫作平行運算
 
Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門
 
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7lambda/closure – JavaScript、Python、Scala 到 Java SE 7
lambda/closure – JavaScript、Python、Scala 到 Java SE 7
 
Introduction to C++ over CLI
Introduction to C++ over CLIIntroduction to C++ over CLI
Introduction to C++ over CLI
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
107个常用javascript语句 oss 计算技术 - ossez info of tech
107个常用javascript语句   oss 计算技术 - ossez info of tech107个常用javascript语句   oss 计算技术 - ossez info of tech
107个常用javascript语句 oss 计算技术 - ossez info of tech
 
Php & Mysql
Php & MysqlPhp & Mysql
Php & Mysql
 
C++工程实践
C++工程实践C++工程实践
C++工程实践
 
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
 
I os 05
I os 05I os 05
I os 05
 
Ch9 教學
Ch9 教學Ch9 教學
Ch9 教學
 

Más de twMVC

twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7twMVC
 
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇twMVC
 
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwrighttwMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwrighttwMVC
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC
 
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC
 
twMVC#43 YARP
twMVC#43 YARPtwMVC#43 YARP
twMVC#43 YARPtwMVC
 
twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹twMVC
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用twMVC
 
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC
 
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC
 
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC
 
twMVC#36C#的美麗與哀愁
twMVC#36C#的美麗與哀愁twMVC#36C#的美麗與哀愁
twMVC#36C#的美麗與哀愁twMVC
 
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波twMVC
 
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC
 
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API twMVC
 

Más de twMVC (20)

twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
 
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇
 
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwrighttwMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwright
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
 
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
 
twMVC#43 YARP
twMVC#43 YARPtwMVC#43 YARP
twMVC#43 YARP
 
twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
 
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
 
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MR
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC#41 The journey of source generator
twMVC#41 The journey of source generator
 
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops)
 
twMVC#36C#的美麗與哀愁
twMVC#36C#的美麗與哀愁twMVC#36C#的美麗與哀愁
twMVC#36C#的美麗與哀愁
 
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波
 
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
 
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
 

twMVC#27 | C# 7.0 新功能介紹