一. 主構造函數
C# 12 引入了主構造函數,這是一種簡明的語法,用於聲明一些構造函數,它們的參數在類型主體中的任何位置可用
1. 初始化屬性
/// <summary>
/// 普通寫法
/// </summary>
public class People1
{
public string name { get; set; }
public int age { get; set; }
public People1(string name, int age)
{
this.age = age;
this.name = name;
}
}
/// <summary>
/// 主構造函數寫法
/// </summary>
/// <param name="name"></param>
/// <param name="age"></param>
public class People2(string name, int age)
{
public string name { get; set; } = name;
public int age { get; set; } = age;
}
/// <summary>
/// 初始化屬性--普通寫法
/// </summary>
public readonly struct Distance1
{
public readonly double Magnitude { get; }
public readonly double Direction { get; }
public Distance1(double dx, double dy)
{
Magnitude = Math.Sqrt(dx * dx + dy * dy);
Direction = Math.Atan2(dy, dx);
}
}
/// <summary>
/// 初始化屬性--主構造函數寫法
/// </summary>
public readonly struct Distance2(double dx, double dy)
{
public readonly double Magnitude { get; } = Math.Sqrt(dx * dx + dy * dy);
public readonly double Direction { get; } = Math.Atan2(dy, dx);
}
2. 依賴關係的注入
public interface IService
{
Distance GetDistance();
}
public class ExampleController(IService service) : ControllerBase
{
[HttpGet]
public ActionResult<Distance> Get()
{
return service.GetDistance();
}
}
3. 其它:瞭解即可
二. 集合表達式
展開運算符(集合表達式中的 ..)可將其參數替換爲該集合中的元素。 參數必須是集合類型
int[] row0 = [1, 2, 3];
int[] row1 = [4, 5, 6];
int[] row2 = [7, 8, 9];
int[] total = [.. row0, .. row1, .. row2, 10];
foreach (int row in total)
{
Console.WriteLine(row);
}
三. 默認Lambda參數
現在可以爲 Lambda 表達式的參數定義默認值。 語法和規則與將參數的默認值添加到任何方法或本地函數相同。
{
//1.無參數
Action line = () => Console.WriteLine("1111");
line.Invoke(); //調用
//2.只有一個輸入參數,括號可以省略
Func<double, double> cube = x => x * x * x;
Console.WriteLine(cube.Invoke(2));
//3. C#12開始,lambda可以提供默認值
var InCrementBy = (int source, int target = 1) => Console.WriteLine(source + target);
InCrementBy(2);
InCrementBy(2, 3);
}
!
- 作 者 : Yaopengfei(姚鵬飛)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 聲 明1 : 如有錯誤,歡迎討論,請勿謾罵^_^。
- 聲 明2 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。