首页 程序笔记 C#7.0新语法介绍

C#7.0新语法介绍

一、out输出参数

在以前使用out输出参数的时候,必须先定义变量,然后才能使用,例如:

先定义一个方法,方法参数是out类型的输出参数:

private void DoNoting(out int x, out int y)
{
      x = 1;
      y = 2;
}

以前版本的写法:

 // 必须先定义i、j,才能使用out参数
 int i = 0;
 int j = 0;
 this.DoNoting(out i, out j);
 Console.WriteLine($"i+j={i+j}");

 在C#7.0中,可以不用先定义,就能够直接使用了:

this.DoNoting(out int x, out int y);
Console.WriteLine($"x+y={x + y}");
this.DoNoting(out var l, out var m);

二、模式

  /// <summary>
  /// 具有模式的 IS 表达式
  /// </summary>
  /// <param name="o"></param>
  public void PrintStars(object o)
  {
        if (o is null) return;     // 常量模式 "null"
        if (!(o is int i)) return; // 类型模式 定义了一个变量 "int i" i的值就是o的值 相当于is类型判断
        Console.WriteLine($"i={i}");
  }

使用方法:

this.PrintStars(null);
this.PrintStars(3);

除了可以像上面那样使用外,还可以使用下面的方式:

private void Switch(string text)
  {
              int k = 100;
              switch (text)
              {
                  case "Tom" when k > 10:   // text="Tom"且k<10才会输出Tom
                      Console.WriteLine("Tom");
                      break;
                  case "Joe" when text.Length < 10:  //text="Joe"且text的长度<10才会输出Joe
                     Console.WriteLine("Joe");
                     break;
                 case string s when s.Length > 7://模式 定义变量s,s就是text的值
                     Console.WriteLine(s);
                     break;
                 default:
                     Console.WriteLine("default");
                     break;
                 case null:
                     Console.WriteLine("null");
                     break;
             }
 }

 调用:

this.Switch(null);
this.Switch("TomTomKevin");
this.Switch("JoeForest");

三、元组

先来看下面的两个方法:

  /// <summary>
  /// 使用默认参数名称
  /// </summary>
  /// <param name="id"></param>
  /// <returns></returns>
  private (string, string, string) LookupName(long id) // tuple return type
  {
        return ("first", "middle", "last");
  }
 
 /// <summary>
 /// 不使用默认参数名称
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 private (string first, string middle, string last) LookupNameByName(long id) // tuple return type
 {
      return ("first", "middle", "last");
      //return (first: "first", middle: "middle", last: "last");
 }

 调用:

 // 使用默认参数名称:Item1、Item2、Item3
 Console.WriteLine($"使用默认参数名称");
 var result = this.LookupName(1);
 Console.WriteLine(result.Item1);
 Console.WriteLine(result.Item2);
 Console.WriteLine(result.Item3);
 // 不使用默认参数名称
 Console.WriteLine($"不使用默认参数名称");
 var result2 = this.LookupNameByName(1);
 Console.WriteLine(result2.first);
 Console.WriteLine(result2.middle);
 Console.WriteLine(result2.last);
 // 也可以使用默认参数名称
 Console.WriteLine($"也可以使用默认参数名称");
 Console.WriteLine(result2.Item1);
 Console.WriteLine(result2.Item2);
 Console.WriteLine(result2.Item3);

四、数字分割

如果数字太长,可以按照一定的位数用“_”进行分割,例如:

long big = 100_000_0000;
Console.WriteLine($"big={big}");


站心网

一、out输出参数在以前使用out输出参数的时候,必须先定义变量,然后才能使用,例如:先定义一个方法,方法..

为您推荐

MVC5 Razor语法

Razor视图引擎是Asp.net MVC3中新扩展的内容,并且也是它的默认视图引擎。还有另外一种Web Forms视图引擎。通过前面的文章可知在Asp.net mvc5中创建视图,默认使用的是Razor视图引擎。而且真正的就一种了。记得之前..

c# 常用语法糖

C#中有许多语法糖(Syntactic Sugar),它们是一些语法上的简化,使代码更易于阅读和编写。以下是一些常见的C#语法糖示例:自动属性初始化器:可以在属性声明时直接初始化属性的值,而无需在构造函数中初始化。publi..

主流数据库中间件介绍和对比

目前的数据库中间件有很多,本节将介绍主流的中间件,并从各个维度将其与Mycat进行对比。Mango的中文名是“芒果”,它是一个轻量级的极速数据层访问框架,目前已有十多个大型线上项目在使用它。据称,某一支付系统利..

介绍Js简单的递归排列组合

最近在开发SKU模块的时候,遇到这样一个需求,某种商品有N(用未知数N来表示是因为规格的数组由用户制定且随时可以编辑的,所以对程序来说,它是一个未知数)类规格,每一类规格又有M个规格值,各种规格值的组合便是..

C#12新特性和语法糖有哪些?

C# 12 于 2023 年 8 月 10 日发布,引入了许多新特性和语法糖,包括:C# 12 新特性records:一种新的值类型,可用于表示具有固定字段集合的实体。记录可以用于表示数据库表、对象模型或其他类似的结构。pattern matc..

C#12最新语法糖示例

以下是一些 C#12 最新语法糖的示例:记录记录是一种新的数据结构,它将数据和方法封装在一起。记录可以简化代码的编写和阅读。record Person(string name, int age){public void SayHello(){Console.WriteLine($"Hel..

f#和c#语法相似吗?

F# 和 C# 都是运行在 .NET 平台上的编程语言,因此它们在一些方面会有一些相似之处,但在语法、功能和设计哲学上也存在一些明显的差异。以下是 F# 和 C# 的一些语法和设计上的相似点和差异点:F# 和 C# 的相似点共同..

splunk常用查询语法

Splunk 是基于事件的搜索和分析平台,用于从大量数据中提取见解。Splunk 使用搜索处理语言 (SPL) 来定义搜索查询。SPL 是一种类似 SQL 的查询语言,用于从 Splunk 数据集中提取数据。Splunk 常用查询语法包括:全文..

发现编程的新天地:Codebay.ai网站全面介绍

在数字化时代,编程已经成为一项不可或缺的技能。无论你是编程新手,还是经验丰富的开发者,都需要一个能提供学习资源、交流平台和项目实践的综合性网站。今天,我们要介绍的就是这样一个网站——Codebay...

.NET9新增了哪些语法糖?

.NET 9 新增了以下语法糖:1. 全局 using 语句.NET 9 允许在程序集级别使用 using 语句,这可以简化代码并避免重复。例如:global using System;global using System.Collections.Generic;public class MyClass{publ..

EF Core 8 (EF8) Contains报错:Microsoft.Data.SqlClient.SqlException (0x80131904): 关键字 'WITH' 附近有语法错误。

最近将原来.NET6的项目升级到.NET8,用的EF Core版本也相应升级到EF8版本,在查询数据的时候使用Contains运算符的地方报错了。Microsoft.Data.SqlClient.SqlException (0x80131904): 关键字 'WITH' 附近有语法错误。..

splunk常用搜索语法

Splunk是一个用于搜索、监控和分析大量数据的平台,其搜索语法提供了丰富的功能来过滤、分析和可视化数据。以下是一些常用的Splunk搜索语法:splunk基本搜索语法关键字搜索your_search_keyword逻辑运算符AND, OR, NO..

Git版本控制分支策略详细介绍

版本控制系统帮助开发人员跟踪、管理和组织他们的代码。特别是,它可以帮助开发人员与队友协作编写代码;将提交和分支等功能与特定的原则和策略相结合。有助于团队组织代码并减少管理版本控制所需的时间。分支策略决..

Redis6.x新特性介绍

在Redis 6.x中,引入了多线程IO处理,这意味着在处理客户端的网络请求时,可以使用多个线程来并行处理,从而更有效地利用系统资源,提高系统的吞吐量和响应速度。特别是在高并发场景下,多线程处理可以大幅提高效率..

Linux中命令行网络工具Netcat 介绍及使用

前沿Netcat 是一款简单的 Unix 工具,使用 UDP 和 TCP 协议。 它是一个可靠的容易被其他程序所启用的后台操作工具,同时它也被用作网络的测试工具或黑客工具。 使用它你可以轻易的建立任何连接。内建有很多实用的工..

介绍 Freenginx,最流行的 Web 服务器的一个分支

Nginx 已被分叉,但它为何以及将如何影响您?Freenginx 是 Nginx 的一个新分支,Nginx 是一种开源 Web 服务器,为三分之一的网站提供支持。这种分拆是否会取代既定的市场领导者,您为什么要关心它?什么是 Nginx?Ng..

常用的API架构风格介绍

常见的API架构风格有:RUST,GraphQL,WebSocket,gRPC,MQTT和Serverless。这六种API架构风格各有其特点和适用场景,以下是它们的简要介绍:RUST:Rust是一种系统编程语言,它专注于安全、并发和性能。在API架构中..

发表回复

返回顶部