C# 8.0 及以上版本范围操作符(Range Operator)

92 阅读1分钟

在项目中发现这么一些代码name[1..],真的看不懂了,于是问了AI,原来是C#高版本语法。以下例子

using System;

class Program
{
    static void Main()
    {
        // 假设 item 是一个具有 Key 属性的对象
        var item = new { Key = "hello" };
        var name = item.Key;
        if (Char.IsLower(name[0])) name = Char.ToUpper(name[0]) + name[1..];
        Console.WriteLine(name); 
    }
}

代码解释:

  • 在 Main 方法中,创建了一个匿名对象 item,其 Key 属性的值为 "hello"
  • 将 item.Key 的值赋给 name 变量。
  • 检查 name 的第一个字符是否为小写。如果是,则将第一个字符转换为大写并与 name 字符串从第二个字符开始的子字符串拼接,最终将结果存储在 name 变量中。

范围操作符(Range Operator):

  • 范围操作符 .. 可以用来创建范围。它有两种形式:

    • start..:表示从 start 开始到结束的范围。
    • start..end:表示从 start 开始到 end 结束的范围(不包括 end)。
  • 在字符串上使用范围操作符时,可以方便地提取子字符串,类似于 Substring 方法,但更简洁。

注意事项:

  • 范围操作符 name[1..] 仅适用于 C# 8.0 及以上版本。

  • 在使用 name[1..] 时,确保 name 不为空,否则可能会导致运行时异常。

这个代码片段的主要目的是将字符串的第一个字符转换为大写,同时保留其余部分不变,使用了范围操作符 name[1..] 来提取子字符串,提高了代码的简洁性和可读性。