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

有哪些竞价网站网站备案类型有哪些

有哪些竞价网站,网站备案类型有哪些,自己做的网站可以运营不,wordpress 输出array上次写完 C# 10#xff0c;有兄弟在后台问 C# 9#xff0c;就再开个篇写一写。C# 9#xff0c;对应的是 Dotnet 5.0。这个出来也有些日子了#xff0c;不过好像群里很多人还是没往这个版本走。我这边现在是全线已经转向了 5.0#xff0c;还是我经常说的那个原因#xff1… 上次写完 C# 10有兄弟在后台问 C# 9就再开个篇写一写。C# 9对应的是 Dotnet 5.0。这个出来也有些日子了不过好像群里很多人还是没往这个版本走。我这边现在是全线已经转向了 5.0还是我经常说的那个原因爽。Dotnet 的每一次升级都有一些让人惊喜的特性让代码更合理更节省时间。1. 基础语言方面语言方面最主要的特性是 Record。这是 C# 9 出来的一个新数据类型。没错Record 是一个数据类型。这个 Record 提供了一些很爽的表示数据的内置功能以至于使用的时候感觉它更像一个类。按微软的说法Record 的目的是提供一个更小更简单的类型来表示不可变数据。不过在使用中我更喜欢用它来做数据传输。定义一个 Record定义一个 Record 有几种方式。最简单的形式是public record User( string name, int age );第一次看这个东西会有点奇怪有没有长得有点像方法可就没内容。嗯这确实是 Record 的一个声明定义定义了一个对象 user这个对象 user 具有 name 和 age 两个属性。可以通过以下方式来访问var some_user  new User ( WangPlus, 35 ); Console.WriteLine( some_user.name );    //输出 WangPlus Console.WriteLine( some_user.age );        //输出 35确实跟类有点像。再来看看另一种定义方式会更像一个类public record User {public string name { get; set; }public int age { get; set; } }给 Record 赋值既然长得像类我们可以像类一样去赋值var some_user  new User { name  WangPlus, age  35 };还可以用位置语法近一步简化User some_user  new ( WangPlus, 35 );注意这个位置语法其实就是按位置匹配字段的意思。赋值时的值会自动去找对应位置的属性来匹配和校验。而且对于第一种简单定义public record User( string name, int age );赋值语句实际编译时上面字段中的 set 会被替换为 init即public record User {public string name { get; init; }public int age { get; init; } }这意味着属性在初始化后无法改变会变成只读属性。相等判断Record 对于相等的定义是内部的属性相等。也就是说判断两个 Record 是否相等时将检查每个属性的值而不是对象的引用地址。看例子User some_user1  new (WangPlus, 35); User some_user2  new (WangPlus, 35); Console.WriteLine(some_user1  some_user2);    // true Console.WriteLine(ReferenceEquals(some_user1, some_user2));    // false例子中some_user1 和 some_user2 属性相同所以他们是相等的尽管是两个不同的引用。不一样的 ToString()Record 的 ToString 是一个内置方法跟别的对象的 ToString 有很大区别。它会把 Record 的定义、属性和值全部输出。上面的例子输出的内容将会是User { name  WangPlus, age  35 }注意如果某个 Record 的属性是引用类型ToString 将会输出这个类型的名称。Record 值的传递这个内容延续到了 C# 10相关内容我在 「Dotnet 6.0你值得拥有」里有详细的描述可以去看看。这里简单说一下就是使用 WithUser some_user  new ( WangPlus, 35 ); User other_user  some_user with { name  WangPlus1 };定义 Init 属性C# 9 里新增了一个对于属性定义的 init 关键字。这个关键字可以用在 Struct、Class、Record 中表示属性仅在初始化时可以进行设置。例如public record User {public string name { get; set; }public int age { get; init; } }这里age 属性被定义为 init。赋值还是一样的User some_user  new ( WangPlus, 35 );当改变值时例如some_user.name  WangPlus1;这个是有效的但是some_user.age  36;这句话会报错因为在上面定义中age 被定义为 init即只有初始化时可以赋值。以上是 C# 9 中增加的最重要的一个内容Record 类型。2. API 方面API 方面主要是三个特性。1. 顶级程序这算是大家盼了很久的一个特性。早期一个程序的开始会是这个样子using System;namespace Demo {static class Program{static void Main(string[] args){Console.WriteLine(Hello World!);}} }现在有了顶级程序的规则这一大段可以直接简化为System.Console.WriteLine(Hello World);就OK了。Program 啦Main 啦统统都可以不写了。对于 WebAPI 应用也一样using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting;namespace Demo {public class Program{public static void Main(string[] args){CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup();});} }这是一个标准的 WebAPI 应用的开始。现在也可以简化成using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting;CreateHostBuilder(args).Build().Run();IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup();});这样的代码其实更简洁而且可以直观的说明程序的意图。如果你也经常写 Python那你会很喜欢这个特性。2. 新的匹配模式C# 9 里终于加入了大家期盼已久的新的匹配模式。主要有两类第一类逻辑匹配这个主要是加入了 And、Or 和 Not。以前我们会用到这样的判断if( input  null ) {}有时候我们也会写成if( input is null ) {}但是判断不等于时我们只有一种方式就是if( input ! null ) {}现在我们有了更可读的写法if( int is not null ) {}看起来可读性就很高了。第二类关系匹配这个特性涉及的是 、、、最主要的是改变了 Switch。以前使用 Switch 时Case 必须是可枚举的值看例子switch( input ) {case 1:break;case 2:break;default:break; }现在这里面加入了范围判断可以这么写switch( input ) {case 5:break;case 5 and 9:break;default:break; }看到没更多的逻辑可以在 Switch 里实现而不用一大篇 if…else 了。3. 类型省略这个特性涉及到代码的方方面面主要的目的是为了减少代码的输入量。看个例子以前我们定义一个字段通常是这样public ListUser users  new ListUser();现在我们可以直接省略后面的部分编译器会很聪明的知道我们想 New 什么public ListUser users  new ();方法也是一样。假设我们有一个方法public static class Users {public User copyUser(User source) {} }以前调用时我们需要先给个变量再调用方法User source_user  new User(); Users.copyUser( source_user );现在我们可以在方法中直接 NewUsers.copyUser( new () );当然这个特性也结合了上面 Record 的特性。因此我们还可以这么写Users.copyUser( new () { name  WangPlus } );嗯语庋的改变需要一点时间来适应但从长远来看依然是一种进步会让代码更方便写和读。同时这个特性和 Var 会变成编程的两个面哪个更好用看自己的习惯了。3. 总结总的来说Dotnet 5.0 的变化还是有很多惊喜的。上面写的只是我们能比较容易感受到的部分感受不到的部分比方编译的合理性、性能的优化GC的回收做得都相当优秀。早转 5.0 早好对吧喜欢就来个三连让更多人因你而受益
http://www.pierceye.com/news/96329/

相关文章:

  • seo站外推广如何用wampp 做网站
  • 怎样用手机做网站中企动力百度百科
  • 哪些网站可以做任务挣钱免费app软件
  • 国内简约网站平潭县机场建设网站
  • wordpress 全站通知wordpress怎样打开速度快
  • 广州市建设职业培训学校网站移除wordpress版本
  • 如何申请一个网站 新网动画制作大师
  • 动易后台 网站统计调查 报表类型怎样使用手机相册备份网站源码
  • 做网站放到百度上需要什么查看wordpress使用什么主题
  • 深圳企业网站seo郑州汉狮专业做网站公司
  • 广东网站建设多少钱辛集专业网站建设
  • 怎样做网站公司的销售小程序推广计划怎么赚钱
  • 网站开发文档编写wordpress小说站群
  • 南宁网站开发推广网站html模板下载
  • 网络编辑的网站建设题二手域名交易平台
  • 定制网站开发商业计划书贵南县网站建设公司
  • 如何免费发布个人网站网站项目需求分析
  • 太原免费网站建设网站开发合作协议书
  • 深圳龙华做网站上海响应式网站制作公司
  • 招投标 网站建设专业型网站和个人网站
  • 网站建设需要那些基础增城线上教学
  • 专注移动网站建设免费咨询电脑维修
  • 六里桥做网站公司惠州做网站 百度优化
  • 做网站怎么选择上市公司wordpress 进销存
  • 做视频网站用哪个模板昆明贤邦网站建设
  • 自建网站工具wordpress仿内涵段子
  • 做推广最好的网站是哪个菜鸟网站建设
  • 首钢建设公司网站微信网站怎么做的好处
  • 西安网站开发费用网站即将 模板
  • 个人做商业网站需要什么热门网站建设代理