一文学会C#新语法使用

169 阅读2分钟

本文会讲解一下日常经常用到的C#6到C#12的新语法!!!

一、元组

  /// <summary>
  /// 元组
  /// 返回一个匿名对象
  /// </summary>
  public static (string fltNo, int Id, string Acft) aaa()
  {
      return ("SY1295", 10, "A320");
  }
  //使用元组方法,通过var接收一个匿名对象,去应用他的属性
  public static void aaa2()
  {
      var s = aaa();
      Console.WriteLine(s.fltNo);
      Console.WriteLine(s.Id);
      Console.WriteLine(s.Acft);
  }
  

二、局步函数

/// <summary>
/// 局步函数
/// </summary>
public static void bbb()
{
    var s1 = Add(10);

    int Add(int Id)
    {
        return 10 + Id;
    }

    var s2 = Add(110);
    
    //最后的输出结果就是 s1=20,  s2=120
}

三、switch

1、when条件判断(并且的关系)

   /// <summary>
   /// switch 新语法 
   /// when 添加条件语句
   /// </summary>
   public static void ccc()
   {
       string text = "小王";
       int k = 10;
       switch (text)
       {
           case "小王" when k > 0:
               break;
           case "小李" when k == 10:
               break;
           case "小张":
               break;
           default:
               break;
       }
   }

2、返回值使用

  /// <summary>
  /// 
  /// </summary>
  public static void ccc2()
  {
      int k = 200;
      string message = k switch
      {
          200 => "k=200",
          700 => "k=700",
          _ => "都不满足"
      };
      
      //message 会输出 k=200
  }

四、模式匹配

///判断一下参数是不是用户,
///如果是用户则实例化成p并输出语句,
///不是用户则返回else
public void ProcessPerson(object person)  
{  
    if (person is Person p)  
    {  
        Console.WriteLine($"Name: {p.Name}, Age: {p.Age}");  
    }  
    else  
    {  
        Console.WriteLine("Not a person object.");  
    }  
}  

五、索引和范围

public void aaa(object person)  
{ 
  string[] words = { "apple", "banana", "cherry", "date" }; 
  //从第一位开始截取,一直截取到第二位
  string secondWord = words[1..2]; // 返回 "banana" 和 "cherry" 的子数组
  Console.WriteLine(secondWord); // 输出 "banana, cherry"
}  

六、判空赋值

 public static void ccc()
 {
     //第一种
     //判断学生是否为null,如果为null 赋值null,不为null 赋值学生的Name字段
     Student student = null;
     string name = student?.Name;
     
     //第一种(这是一种优化版的三目运算)
     //判断potentialNullName是否为有内容,有则把自己赋值给fullName,没有则返回"Unknown"
     string potentialNullName = null;  
     string fullName = potentialNullName ?? "Unknown"; 
 }

七、数字下划线

 ///使用下划线区分数字位数,提高可读性
 public static void ccc()
 {
     //这是代表 num为一亿
     int num = 10000_000_0;
 }

八、异常信息筛选

///在catc后面 使用when 添加条件筛选信息
public static void ccc()
{
    try
    {
        // 一些可能抛出异常的代码
    }
    catch (Exception e) when (e.Message.Contains("特定异常信息"))
    { 
        // 仅当异常信息中包含"特定异常信息"时才进入catch块 Console.WriteLine("捕获到异常: " + e.Message);
    }
}

九、nameof表达式

 ///获取参数数据类型
 public static void ccc()
 {
     string name = "小王";
     var ss = nameof(name);

     // ss 最后会输出 string
  }
 

以上就是新了解到的c#的新语法,大家还有更多的语法欢迎到评论区讨论!!!