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

网站做关键词搜索要好多钱网游开发

网站做关键词搜索要好多钱,网游开发,起公司注册名,广告牌设计效果图书接上回,我们继续来聊聊.NET9和C#13带来的新变化。 01、新的泛型约束 allows ref struct 这是在 C# 13 中,引入的一项新的泛型约束功能,允许对泛型类型参数应用 ref struct 约束。 可能这样说不够直观,简单来说就是Span、ReadO…

书接上回,我们继续来聊聊.NET9和C#13带来的新变化。

在这里插入图片描述

01、新的泛型约束 allows ref struct

这是在 C# 13 中,引入的一项新的泛型约束功能,允许对泛型类型参数应用 ref struct 约束。

可能这样说不够直观,简单来说就是Span、ReadOnlySpan类型,我们直接看下面的代码示例:

在这里插入图片描述

在没有新的约束allows ref struct之前,Span是不能当参数传入的,直接编译错误,但是有了新约束则就可以支持Span参数了。

因此C# 13 中引入了 where T : allows ref struct 泛型约束后使得我们可以对泛型参数类型进行更加精细的控制。通过这个特性,泛型方法或类就可以接受 ref struct 类型,如 Span 、ReadOnlySpan等,因为这些类型是在栈上分配内存,能够提供更高效的内存管理和更快的执行速度,所以这个新特性特别适用于高性能、内存密集型的泛型方法和类,可以有效避免堆分配和垃圾回收的开销。

02、ref struct接口

在 C# 13 之前,ref struct 是无法实现接口的。 从 C# 13 开始,ref struct可实现接口,但必须遵循 ref 安全性规则。 例如,由于需要装箱转换,因此无法将 ref struct 类型转换为接口类型。

在这里插入图片描述

如上图,ref struct类型可以实现IInterface接口,但是当用IInterface接口去接收RefStructInterface类型时则直接编译报错,无论直接接收还是强制转换都是不支持的。

03、在异步方法中使用ref struct

从C# 13开始,ref struct可以在异步方法中使用,但是有一个限制:它们不能在与 await 表达式同一个代码块中交互。这是为了避免 ref struct在跨越异步操作时引发内存安全问题,因为 ref struct 类型的实例通常存储在栈上,并且不能在异步操作中跨越栈帧。

下面代码是在异步方法中使用ref struct示例:

ref int Process(ref int x)
{return ref x;
}
//在异步方法中使用ref
async Task RefInAsync()
{var value = 0;await Task.Delay(0);ref var local = ref Process(ref value);
}

04、在迭代器中使用ref struct

从 C# 13 开始,允许在迭代器方法中使用 ref struct,前提是满足以下条件:不能在包含 yield return 的代码段中使用它们。这是因为yield return 语句会导致方法的执行暂停并在以后继续执行。如果在这期间使用了ref struct,可能会导致这些类型的生命周期管理出现问题(例如跨越栈帧的切换)。为了避免这种问题,C# 13 规定,如果要在迭代器方法中使用 ref struct,则不能在 yield return 语句所在的代码段中操作它们。

下面是在迭代器中使用ref struct示例代码:

ref int Process(ref int x)
{return ref x;
}
//在迭代器中使用ref
IEnumerable<int> RefInIterator(int[] array)
{for (var i = 0; i < array.Length; i++){ref var v = ref Process(ref array[i]);yield return v;}
}

05、部分属性、部分索引器

早在C#2就引入了部分类,在C#3引入了部分方法,到现在C#13又新增了部分属性和部分索引器。

这一改进这意味着允许属性和索引器可以跨越多个部分进行声明和实现。这给自动生成代码或分离关注点带来了极大便利,也更加灵活地生成和管理属性代码,特别适用于与源代码生成器等工具结合使用的场景。

以下是 C# 13 中属性支持partial的示例:

public partial class PartialExamples
{//部分属性public partial int Capacity { get; set; }//部分索引器public partial string this[int index] { get; set; }//部分方法public partial string? TryGetItemAt(int index);
}
public partial class PartialExamples
{private List<string> _items = ["one", "two", "three", "four", "five"];//部分属性public partial int Capacity{get => _items.Count;set{if ((value != _items.Count) && (value >= 0)){_items.Capacity = value;}}}//部分索引器public partial string this[int index]{get => _items[index];set => _items[index] = value;}//部分方法public partial string? TryGetItemAt(int index){if (index < _items.Count){return _items[index];}return null;}
}

06、foreach 支持Index

相信很多人都遇到过想要在foreach的时候获取集合元素当前索引,一般两种选择,一种自己维护一个变量,一种直接改用for。

而.NET9开始总算改变了这一现状,可以在foreach时候同时获取到当前元素及其索引。

我们下面看看Index()方法给我们带来了多大便利,代码如下:

//.NET 9 之前public void Loop(){List<string> items = ["张三", "李四", "王五"];var idx = 0;foreach (var item in items){idx++;Console.WriteLine($"第{idx}个人名字是:{item}");}}//.NET 9public void LoopNew(){List<string> items = ["张三", "李四", "王五"];//直接获取索引、元素foreach ((int Index, string Item) in items.Index()){Console.WriteLine($"第{Index + 1}个人名字是:{Item}");}}//.NET 9public void LoopNew2(){List<string> items = ["张三", "李四", "王五"];//先获取元组后,再获取索引、元素foreach (var item in items.Index()){Console.WriteLine($"第{item.Index + 1}个人名字是:{item.Item}");}}

:测试方法代码以及示例源码都已经上传至代码库,有兴趣的可以看看。https://gitee.com/hugogoos/Planner

http://www.yayakq.cn/news/158531/

相关文章:

  • 网站开发容易学吗网站邮箱登陆代码
  • 教育网站制作哪家服务好网站建设费记在什么科目下
  • 哪些网站是营销型网站及原因建行网站是多少呢
  • 做个淘宝客网站怎么做的东莞seo收费
  • 园林网站模板下载ii6创建网站
  • 天津北京网站建设公司哪家好公司网站服务器选择
  • zencart网站地图生成o2o医药电商平台有哪些
  • 潍坊网站建设设计做外贸做的很好的网站
  • jquery 购物网站品牌网站设计首选
  • 经典企业网站模板建设银行信用卡网站多少
  • 已备案网站数量wordpress附件详情
  • 自己网站做短链接友情链接权重高的网站
  • 精品课程网站建设方案网龙网络公司校园招聘
  • 网站开发项目总结报告网站系统设计方案
  • 网站建设品牌公司大三亚app下载
  • 团购网站开发与设计简述企业网络建设的流程
  • 莱芜网站建设电话制作好
  • 四川网站建设电话咨询岳阳市内从事网站建设的公司
  • 家居品牌网站建设logo模板
  • 做网站开发的笔记本配置购物网站开发教案
  • 增城高端定制网站建设网站建设的步骤教学
  • 宁波seo怎么做优化seo收录排名
  • 房山网站开发做百度网站接到多少客户电话
  • 易企互联网站建设网站建设推广公司
  • 太原seo网站排名优化360信息流广告在哪里展示
  • 连云港城乡建设局网站咸宁企业网络推广方案
  • 深圳网站制作排行榜aspcms网站模板
  • 网站建设带数据库模板电子网站风格设计
  • 营销型网站建设有哪些平台小网站推荐一个
  • 网站被百度降权了怎么办网站建设用什么软件做