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

【.Net Core/.Net8教程】巧用 C# 8.0 切片语法:高效处理数组和字符串

    C# 切片语法糖(使用 .. 和 ^)是在 C# 8.0 版本中引入的。这些新语法提供了更简洁的方式来对数组、字符串和其他实现了 System.Span<T> 接口的类型进行切片和索引操作。

1. 使用 ^ 表示从尾部索引

^ 符号用于从集合的尾部开始索引。

int[] array = { 10, 20, 30, 40, 50 };

// 取得最后一个元素
int lastElement = array[^1]; // 50

// 取得倒数第二个元素
int secondLastElement = array[^2]; // 40

2. 使用 .. 表示范围

范围操作符 .. 可以用于获取集合的子范围。

int[] array = { 10, 20, 30, 40, 50 };

// 取得前两个元素
int[] firstTwo = array[..2]; // { 10, 20 }

// 取得从索引 2 开始到末尾的元素
int[] fromThirdToEnd = array[2..]; // { 30, 40, 50 }

// 取得中间的元素(索引 1 到 3,不包括 3)
int[] middle = array[1..3]; // { 20, 30 }

3. 获取整个数组

可以使用 .. 不带任何参数来获取整个数组。

int[] array = { 10, 20, 30, 40, 50 };

// 返回整个数组
int[] allElements = array[..]; // { 10, 20, 30, 40, 50 }

4. 从特定索引开始到倒数索引结束

组合使用索引和范围。

int[] array = { 10, 20, 30, 40, 50 };

// 从索引 1 到倒数第二个元素(不包括倒数第一个)
int[] range = array[1..^1]; // { 20, 30, 40 }

5. 字符串切片

这些操作同样适用于字符串。

string text = "foolisunday 原创自八荒我为王@csdn.net";

// 取得前 11 个字符
string hello = text[..11]; // "foolisunday"

// 取得最后 9 个字符
string world = text[^9..]; // "@csdn.net"

// 取得从索引 12 开始到倒数第 9 个字符的范围
string subText = text[12..^9]; // "原创自八荒我为王"

6. 带有 Range 类型的复杂表达式

C# 中的 Range 类型可以用于创建自定义范围,并用于传递给方法。

int[] array = { 10, 20, 30, 40, 50 };

// 使用 Range 对象
Range customRange = 1..4;
int[] subArray = array[customRange]; // { 20, 30, 40 }

7. 带有 Index 类型的表达式

Index 类型允许创建基于正向或反向的索引。

int[] array = { 10, 20, 30, 40, 50 };

Index lastIndex = ^1;
int lastElement = array[lastIndex]; // 50

Index startIndex = 2;
int startElement = array[startIndex]; // 30

http://www.kler.cn/a/388425.html

相关文章:

  • HarmonyOS 如何实现传输中的数据加密
  • vivo 游戏中心包体积优化方案与实践
  • 【计算机网络】【网络层】【习题】
  • JSON-RPC-CXX深度解析:C++中的远程调用利器
  • 【Vue】Vue3.0(十九)Vue 3.0 中一种组件间通信方式-自定义事件
  • 以色列支付龙头遭DDoS攻击,各地超市加油站等POS机瘫痪
  • 【微服务】Docker 容器化
  • 两个matlab在线编译网站
  • golang常见面试题-基础篇
  • MATLAB课程:AI工具辅助编程——MATLAB+LLMs
  • 【基础解读】(PYG)Design of Graph Neural Networks——Heterogeneous Graph Learning
  • 存算分离与计算向数据移动:深度解析与Java实现
  • Linux【基础篇】T
  • k8s-service、endpoints、pod之间是怎么进行网络互通的
  • Vue 状态管理工具vuex
  • 贪心算法:经典活动安排问题
  • 【人工智能训练师】7 大数据处理与应用
  • Java什么是变量?变量有什么用?
  • MongoDB新版本,单节点安装
  • 【网络安全 | 服务器】Nginx功能快速入门
  • python视频事物分析
  • AMD-OLMo:在 AMD Instinct MI250 GPU 上训练的新一代大型语言模型。
  • C#语言在软件开发中的应用与优势
  • 【鸿蒙学习】HarmonyOS应用开发者高级认证 - 认证通过(附题目)
  • Vue 中的定时刷新与自动更新实现
  • Android Framework 框架层主要功能类的基本介绍