当前位置: 首页 > news >正文

C#11--14新特性

1、定义属性使用field关键字

2、赋值时null判断简化

3、扩展属性、静态方法

4、多行字符串定义

5、Lock对象应用

6、集合简化初始化 [...]

using System.Runtime.Serialization;
using System.ComponentModel;
using System.Security.Cryptography.X509Certificates;
using System.Runtime.CompilerServices;

namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string ABC
{
get;
set
{
//使用field,简化属性定义
field = value;
if (value == "hello")
Console.WriteLine("hello world");
}
}

        private Lock _lock = new Lock();


private void button1_Click(object sender, EventArgs e)
{
Button button = null;
//支持赋值语句的空值判断 少些一行if代码
button?.Text = "hello";

            ABC = "123";
ABC = "hello";

            var list = new List<string>();
if (list.IsEmpty)
Console.WriteLine("this list is empty");
Console.WriteLine($"{list.GetCount()}");

            var emptyList = List<int>.GetEmptyInstence();
Console.WriteLine($"{emptyList.IsEmpty}");
emptyList.Add(1);
Console.WriteLine($"{emptyList.IsEmpty}");
//简化using用法
using ADisposableObj obj = new ADisposableObj();
obj.SayHello();
//新的Lock对象
lock (_lock)
{
//todo
}

            using (_lock.EnterScope())
{
//todo
}
//尝试获取锁
while (true)
{
var isOk = _lock.TryEnter();
if (!isOk)
{
Thread.Sleep(10);
continue;
}
try 

//todo
}
finally
{
_lock.Exit();
}
break;
}

            //集合表达式
List<int> aList = [1, 2, 3, 4];
Console.WriteLine(string.Join(",", aList));
//多行字符串定义 A\B\C前面的空格给去掉了,后面的换行符保留
var str = """
A
B
C
""";
MessageBox.Show(str);
}

}

    public static class ListExtension
{
extension<T>(List<T> list)
{
/// <summary>
/// 扩展属性
/// </summary>
public bool IsEmpty => list.Count == 0;
/// <summary>
/// 扩展方法
/// </summary>
/// <returns></returns>
public int GetCount() => list.Count;
/// <summary>
/// 扩展静态函数
/// </summary>
/// <returns></returns>

            public static List<T> GetEmptyInstence() => new List<T>();
}
}

    public class ADisposableObj : IDisposable
{
private AutoResetEvent _resetEvent = new AutoResetEvent(false);
public void SayHello()
{
Console.WriteLine("Hello");
}
public void Dispose()
{
_resetEvent?.Dispose();
}
}
}

http://www.dtcms.com/a/503771.html

相关文章:

  • 力扣热题100道之最大子数之和
  • 手机网站开发c 教程一嗨租车网站建设的功能特色
  • 购物网站 app网站建设时应该做的优化
  • 深圳网站建设raygf2022年免费ppt模板下载
  • 【Python】二.判断语句
  • 【数据集】最新全国景区A-5A级景区数据集(更新至2025年)-含矢量及Excel详细
  • Linux线程 --- 线程控制、pthread线程库、线程栈、线程本地存储
  • C++:从0开始学习链表(练习)
  • JAVA的Set集合类
  • linux系统中进程控制
  • 网站域名注册证书是什么视频拍摄设备
  • 下载 LibreCAD 并创建个人分支的 Git 操作指南
  • 石家庄大型网站建站网站开发能从事那些职业
  • JavaScript性能优化实战大纲性能优化的核心目标
  • 【Android】布局优化:include、merge、ViewStub的使用及注意事项
  • PHP 桌面端框架NativePHP for Desktop v2 发布!
  • 第7章 muduo编程示例(2)
  • 哪里有放网站的免费空间无锡市政务服务网站建设项目
  • 为什么Unity修改过物体,物体的位移和旋转还是会被改变
  • Dify 平台从 x86_64 迁移至 ARM64 架构完整指南
  • 站嗨建站适合小白的室内设计软件
  • 基于车速预测的燃料电池混合动力汽车能量管理策略:一种自适应ECMS方法及其Python实现
  • [嵌入式系统-149]:新能源汽车的三电系统以及其功能、硬件架构、嵌入式操作系统
  • 在iStoreOS系统中安装Docker:从基础到高级应用的完整指南
  • 建设银行 网站查询密码杭州清风室内设计学校
  • 专业的个人网站建设商务网站建设与维护 ppt
  • 《Python红队攻防零基础脚本编写:入门篇(二)》
  • 装修设计网站免费婚庆网站建设策划案费用预算
  • 限制GIT提交大文件
  • STM32F103C8T6_IIC协议详解