在C#中如何将字符串^1转换为Index对象?
C# 字符串转Index对象实现列表末尾元素访问
C# 没有提供字符串到Index类型的直接转换,所以你写的(Index)s强制转换会报错。要将字符串"^1"转换为可用的Index对象,需要手动解析字符串格式,再构造Index实例。
具体实现代码如下:
var l = new List<string> {"1", "2a", "3cd"}; var s = "^1"; Index index; // 解析以^开头的从末尾计数的索引格式 if (s.StartsWith('^') && int.TryParse(s.Substring(1), out var endValue)) { // 使用FromEnd方法创建从末尾开始的Index index = Index.FromEnd(endValue); } else if (int.TryParse(s, out var startValue)) { // 处理从开头计数的索引格式(如"0") index = new Index(startValue, fromEnd: false); } else { throw new ArgumentException("输入的字符串不是有效的Index格式"); } Console.WriteLine(l[index]); // 输出:"3cd"
关键说明
Index.FromEnd(int n)方法等价于语法中的^n,用于创建从集合末尾开始计数的索引对象。- 标准C#的
Index语法仅支持^n(从末尾)和非负整数(从开头)两种格式,若需支持更多格式可扩展解析逻辑。
内容的提问来源于stack exchange,提问作者lrh09
相关产品推荐
相关产品推荐

