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

个人网站制作多少钱哪个网站能接效果图做

个人网站制作多少钱,哪个网站能接效果图做,襄阳今天刚刚发生的新闻,网站维护知识C# 13 即 .NET 9 按照计划会在2024年11月发布,目前一些新特性已经定型,让我们来预览一个比较大型比较重要的新特性。 正文 扩展类型 Extension types 在5月份的微软 Build 大会中的 What’s new in C# 13 会议上,两位大佬花了很长的篇幅来…

C# 13 即 .NET 9 按照计划会在2024年11月发布,目前一些新特性已经定型,让我们来预览一个比较大型比较重要的新特性。

正文

扩展类型 Extension types

在5月份的微软 Build 大会中的 What’s new in C# 13 会议上,两位大佬花了很长的篇幅来演示这个特性。

这个特性一直是大家很关心的,在 github 的 issue 上讨论的也是如火如荼,当然微软也隔了好多年。

首先,让我们来回顾一下 C# 中的扩展方法

using System;var zhangsan = new Person();
Console.WriteLine(zhangsan.GetAge());public class Person
{public string Name { get; set; } public DateTime Birthday { get; set; }
}public static class PersonExtension
{public static int GetAge(this Person person) => DateTime.Now.Year - person.Birthday.Year;
}

以上代码演示了一个扩展方法声明方式及使用方法。

我们在不侵入 Person 类的基础上为 Person 类扩展了一个 GetAge() 的方法,虽然已经可以很方便的扩展出一些方法来,但是问题也是显而易见的,例如必须声明在静态类中、语法看起来很怪异、只能扩展方法而不能扩展属性等等。

于是,在即将到来的 C# 13 中,我们可以这样

var zhangsan = new Person();
Console.WriteLine(zhangsan.GetAge());public implicit extension PersonExtension for Person
{public int GetAge() => DateTime.Now.Year - this.Birthday.Year;
}

怎么样,语义是不是清晰了很多?

进一步的,年龄应该是一个属性而不应该是一个方法

var zhangsan = new Person();
Console.WriteLine(zhangsan.Age);public implicit extension PersonExtension for Person
{public int Age => DateTime.Now.Year - this.Birthday.Year;
}

困扰多年的如何扩展属性的问题终于得到了解决。

implicit extension / explicit extension

在上一个例子,不知道大家有没有注意到关键字是 implicit extension,那么很显然,会有一个对应的 explicit extension,下面让我们来看看花活

var zhangsan = new Person();
if(zhangsan.IsStudent)
{Student zhangsanAsStudent = zhangsan;Console.WriteLine(zhangsanAsStudent.Grade);
}public implicit extension PersonExtension for Person
{public int Age => DateTime.Now.Year - this.Birthday.Year;public bool IsStudent => this.Age < 18;
}public explicit extension Student for Person
{public string Grade => "五年级";
}

可以看到,这里有一个显示扩展,显式扩展可以创建原始类的投影或子类。当你要基于扩展类型添加条件方法或属性时,这可能很有用。

当然,扩展静态方法也是没问题的

var zhangsan = Person.Create();public implicit extension PersonExtension for Person
{public static Person Create() => new Person();
}

当然,系统类型也是支持的

Console.WriteLine("World".SayHello());public implicit extension StringExtension for string
{public string SayHello() => "Hello" + this;
}

总结

我想这个特性是很大的一个改变,或许可以改进 C# 代码的组织方式,有望提高代码的可读性、可维护性和表现力。

通过允许开发人员在不修改原始代码的情况下向现有类添加功能,它可以促进代码重用并减少修改原始类的需要。

另外据了解,这个特性以及相关特性,例如扩展接口等等,并不会在 C# 13 (.NET 9) 中完整的放出来,而是会在后续版本中逐渐解锁。

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

相关文章:

  • 一个网站需要哪些备案上市公司网站建设方案
  • 宁波培训网站建设潍坊大型做网站建设的公司
  • 信宜网站开发公司在线购物系统的分析与设计
  • 建设一个最普通网站要多少钱展示网站模板下载
  • 接单子做网站做mod游戏下载网站
  • 奉贤网站制作哪个网站可以接加工单
  • 动态图网站怎么做dw如何建立网站模板
  • 家教网站建设网站建设销售秘籍
  • 企业建设网站公司简介wordpress开发主题
  • 怎么样创建网站货源网 wordpress 模板
  • 顺的网站建设信息呼和浩特网站制作 建设
  • 网站建设项目报告书网站建设需要注意
  • 潍坊网站关键词免费做请帖的网站
  • 重庆市建设企业诚信分查询网站做建筑设计的网站推荐
  • 怎么向搜索引擎提交网站社区电商网站设计
  • 网站开发的毕业设计黄村网站开发公司电话
  • 韩国服装网站建设做网站的赢点公司
  • 新网站建设哪家好wordpress做多语言
  • 合肥建设网站制作哪个好怎么做网站的需求
  • 搭一个网站自适应网站运动div如何设置的
  • 温州网站运营国家工信部网站备案查询
  • 曹县住房和城乡建设局网站枣庄seo技术培训
  • 数字火币交易网站开发免费咨询妇科医生在线
  • 台州网站注册 公司微信网站跳转链接怎么做
  • 专业制作网站有哪些企业网站栏目设置说明
  • 百度做的网站后台怎么更新wordpress头像上传插件
  • 网站如何做品牌宣传自己的网站怎么做团购
  • 安徽省建设厅查询网站如何将网站做的更美观
  • 个人建什么网站最赚钱吗保定市网站设计
  • 浙江职业能力建设网站网站集约化建设会议请示