优秀的编程知识分享平台

网站首页 > 技术文章 正文

.NET10:C#14的一些新功能(c# 10.0)

nanyue 2025-04-30 18:37:55 技术文章 5 ℃
C#14也带了一些新功能,下面是一些常用且立竿见影的基本功能:
1、List<>支持nameof
2、Lambda中支持scoped,ref,out,in
3、空条件赋值
4、属性支持field
5、实例构造函数和事件支持部分成员修饰
下面是这五个方面的具体案例:
//1、不支持nameof(List<>)Console.WriteLine(nameof(List<>));Console.WriteLine(nameof(List<string>));Console.WriteLine(nameof(List<int>));
//2、您可以向 lambda 表达式参数添加参数修饰符,例如scoped、ref、in、out或 ,ref readonly而无需指定参数类型:TryParse<int> parse1 = (text, out result) => Int32.TryParse(text, out result);//之前写法TryParse<int> parse2 = (string text, out int result) => Int32.TryParse(text, out result);
//3、 空条件赋值void SetPersonName(Person? person, string name){ //空条件赋值 person?.Name = name;}//4、属性支持fielddelegate bool TryParse<T>(string text, out T result);public partial class Person{ public string Name { get; set { if (string.IsOrEmpty(value)) { throw new Exception("Name cannot be or empty"); } field = value; } } public int Age { get; set { if (150 >= field && field >= 0) { field = value; } else { throw new Exception("Invalid age"); } } } //5、事件可以声明为部分成员 public partial event EventHandler? NameChanged; public partial Person();}
public partial class Person{ //5、实例构造函数可声明为部分成员 public partial Person() { Name = "Default Name"; Age = 0; }
private EventHandler _nameChangedHandlers; // 实现声明:必须包含 add 和 remove public partial event EventHandler NameChanged { add { Console.WriteLine("Handler added."); _nameChangedHandlers += value; } remove { Console.WriteLine("Handler removed."); _nameChangedHandlers -= value; } } public void OnNameChanged() { _nameChangedHandlers?.Invoke(this, EventArgs.Empty); }}
最近发表
标签列表