(1) Visual Studio
Cần sử dụng mới nhất bản xem trước Visual Studio, sửa lại tệp *.csproj
thành
1 2 3 4 5 6 7 8 | <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> Project</span> <span class="token attr-name">Sdk</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> Microsoft.NET.Sdk <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> PropertyGroup</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> OutputType</span> <span class="token punctuation">></span></span> Exe <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> OutputType</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> TargetFramework</span> <span class="token punctuation">></span></span> net5.0 <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> TargetFramework</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> LangVersion</span> <span class="token punctuation">></span></span> 9.0 <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> LangVersion</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> PropertyGroup</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> Project</span> <span class="token punctuation">></span></span> |
(2) Nhập mục tiêu tính năng
File Program.cs
Old method
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <span class="token keyword">namespace</span> <span class="token namespace">csharp9 <span class="token punctuation">.</span> old1</span> <span class="token punctuation">{</span> <span class="token keyword">class</span> <span class="token class-name">Program1Old</span> <span class="token punctuation">{</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">MyMethod</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token class-name">Person</span> person <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Person</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">//<-- Trong C# 8.</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">Person</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> FirstName <span class="token punctuation">{</span> <span class="token keyword">get</span> <span class="token punctuation">;</span> <span class="token keyword">set</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
New Cú pháp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <span class="token keyword">namespace</span> <span class="token namespace">csharp9 <span class="token punctuation">.</span> new1</span> <span class="token punctuation">{</span> <span class="token keyword">class</span> <span class="token class-name">ProgramNew</span> <span class="token punctuation">{</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">MyMethod</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token class-name">Person</span> person <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">//<-- Trong C# 9.</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">Person</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> FirstName <span class="token punctuation">{</span> <span class="token keyword">get</span> <span class="token punctuation">;</span> <span class="token keyword">set</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
(3) Thuộc tính Init-only tính năng
Old way
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <span class="token keyword">using</span> <span class="token namespace">System</span> <span class="token punctuation">;</span> <span class="token keyword">namespace</span> <span class="token namespace">csharp9 <span class="token punctuation">.</span> old2</span> <span class="token punctuation">{</span> <span class="token keyword">class</span> <span class="token class-name">Program2Old</span> <span class="token punctuation">{</span> <span class="token keyword">static</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">Main</span> <span class="token punctuation">(</span> <span class="token class-name"><span class="token keyword">string</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span></span> args <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token class-name"><span class="token keyword">var</span></span> person <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Person</span> <span class="token punctuation">(</span> <span class="token string">"Nguyễn Văn A"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> person <span class="token punctuation">.</span> Name <span class="token operator">=</span> <span class="token string">"xx"</span> <span class="token punctuation">;</span> Console <span class="token punctuation">.</span> <span class="token function">WriteLine</span> <span class="token punctuation">(</span> person <span class="token punctuation">.</span> Name <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Person</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token function">Person</span> <span class="token punctuation">(</span> <span class="token class-name"><span class="token keyword">string</span></span> name <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> Name <span class="token operator">=</span> name <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> Name <span class="token punctuation">{</span> <span class="token keyword">get</span> <span class="token punctuation">;</span> <span class="token keyword">set</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// Trong C# 8.</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
New Way in C # 9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <span class="token keyword">using</span> <span class="token namespace">System</span> <span class="token punctuation">;</span> <span class="token keyword">namespace</span> <span class="token namespace">csharp9 <span class="token punctuation">.</span> new2</span> <span class="token punctuation">{</span> <span class="token keyword">class</span> <span class="token class-name">Program</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">Main</span> <span class="token punctuation">(</span> <span class="token class-name"><span class="token keyword">string</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span></span> args <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token class-name"><span class="token keyword">var</span></span> person <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Person</span> <span class="token punctuation">(</span> <span class="token string">"Tran Van B"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> Console <span class="token punctuation">.</span> <span class="token function">WriteLine</span> <span class="token punctuation">(</span> person <span class="token punctuation">.</span> Name <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Person</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token function">Person</span> <span class="token punctuation">(</span> <span class="token class-name"><span class="token keyword">string</span></span> name <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> Name <span class="token operator">=</span> name <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> Name <span class="token punctuation">{</span> <span class="token keyword">get</span> <span class="token punctuation">;</span> init <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">// Trong C# 9.</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
(4) Keyword “is” and “and”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <span class="token keyword">using</span> <span class="token namespace">System</span> <span class="token punctuation">;</span> <span class="token keyword">namespace</span> <span class="token namespace">csharp9 <span class="token punctuation">.</span> new3</span> <span class="token punctuation">{</span> <span class="token keyword">class</span> <span class="token class-name">Program</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">Main</span> <span class="token punctuation">(</span> <span class="token class-name"><span class="token keyword">string</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span></span> args <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token class-name"><span class="token keyword">int</span></span> <span class="token keyword">value</span> <span class="token operator">=</span> <span class="token number">42</span> <span class="token punctuation">;</span> <span class="token keyword">switch</span> <span class="token punctuation">(</span> <span class="token keyword">value</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">case</span> <span class="token operator"><=</span> <span class="token number">0</span> <span class="token punctuation">:</span> Console <span class="token punctuation">.</span> <span class="token function">WriteLine</span> <span class="token punctuation">(</span> <span class="token string">"Less than or equal to 0"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token operator">></span> <span class="token number">0</span> and <span class="token operator"><=</span> <span class="token number">10</span> <span class="token punctuation">:</span> Console <span class="token punctuation">.</span> <span class="token function">WriteLine</span> <span class="token punctuation">(</span> <span class="token string">"More than 0 but less than or equal to 10"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token keyword">default</span> <span class="token punctuation">:</span> Console <span class="token punctuation">.</span> <span class="token function">WriteLine</span> <span class="token punctuation">(</span> <span class="token string">"More than 10"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">break</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token class-name"><span class="token keyword">var</span></span> message <span class="token operator">=</span> <span class="token keyword">value</span> <span class="token keyword">switch</span> <span class="token punctuation">{</span> <span class="token operator"><=</span> <span class="token number">0</span> <span class="token operator">=></span> <span class="token string">"Less than or equal to 0"</span> <span class="token punctuation">,</span> <span class="token operator">></span> <span class="token number">0</span> and <span class="token operator"><=</span> <span class="token number">10</span> <span class="token operator">=></span> <span class="token string">"More than 0 but less than or equal to 10"</span> <span class="token punctuation">,</span> _ <span class="token operator">=></span> <span class="token string">"More than 10"</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> Console <span class="token punctuation">.</span> <span class="token function">WriteLine</span> <span class="token punctuation">(</span> message <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">value</span> <span class="token operator">></span> <span class="token number">0</span> <span class="token operator">&&</span> <span class="token keyword">value</span> <span class="token operator"><=</span> <span class="token number">10</span> <span class="token punctuation">)</span> <span class="token comment">// Trong C# 8.</span> <span class="token punctuation">{</span> Console <span class="token punctuation">.</span> <span class="token function">WriteLine</span> <span class="token punctuation">(</span> <span class="token string">"More than 0 but less than or equal to 10"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">value</span> <span class="token keyword">is</span> <span class="token operator">></span> <span class="token number">0</span> and <span class="token operator"><=</span> <span class="token number">10</span> <span class="token punctuation">)</span> <span class="token comment">// Trong C# 9.</span> <span class="token punctuation">{</span> Console <span class="token punctuation">.</span> <span class="token function">WriteLine</span> <span class="token punctuation">(</span> <span class="token string">"More than 0 but less than or equal to 10"</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
(5) Đối tượng ghi tính năng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <span class="token keyword">using</span> <span class="token namespace">System</span> <span class="token punctuation">;</span> <span class="token keyword">namespace</span> <span class="token namespace">csharp9</span> <span class="token punctuation">{</span> <span class="token keyword">class</span> <span class="token class-name">RecordObject</span> <span class="token punctuation">{</span> <span class="token keyword">static</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">Main</span> <span class="token punctuation">(</span> <span class="token class-name"><span class="token keyword">string</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span></span> args <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token class-name"><span class="token keyword">var</span></span> book <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token constructor-invocation class-name">Book</span> <span class="token punctuation">{</span> Title <span class="token operator">=</span> <span class="token string">"Chí Phèo"</span> <span class="token punctuation">,</span> Author <span class="token operator">=</span> <span class="token string">"Nam Cao"</span> <span class="token punctuation">,</span> ISBN <span class="token operator">=</span> <span class="token string">"8935092514741"</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> <span class="token class-name"><span class="token keyword">var</span></span> newBook <span class="token operator">=</span> <span class="token return-type class-name">book</span> with <span class="token punctuation">{</span> Title <span class="token operator">=</span> <span class="token string">"Đôi lứa xứng đôi"</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> <span class="token comment">// Trong C# 9. Record Object.</span> Console <span class="token punctuation">.</span> OutputEncoding <span class="token operator">=</span> System <span class="token punctuation">.</span> Text <span class="token punctuation">.</span> Encoding <span class="token punctuation">.</span> UTF8 <span class="token punctuation">;</span> Console <span class="token punctuation">.</span> <span class="token function">WriteLine</span> <span class="token punctuation">(</span> newBook <span class="token punctuation">.</span> Title <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token return-type class-name">record</span> Book <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> Title <span class="token punctuation">{</span> <span class="token keyword">get</span> <span class="token punctuation">;</span> init <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> Author <span class="token punctuation">{</span> <span class="token keyword">get</span> <span class="token punctuation">;</span> init <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> ISBN <span class="token punctuation">{</span> <span class="token keyword">get</span> <span class="token punctuation">;</span> init <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Mã nguồn: https://github.com/donhuvy/csharp9.git