这是我参与更文应战的第7天,活动详情检查: 更文应战
C#8.0新功用系列中断了良久,今天又重新起航了,每天学习行进一点点~~~
1.数组操作的传统做法
有过数组学习阅历的人,应该都知道数组的拜访能够依照下标直接拜访,那么最直接的索引数组拜访办法也即如此。
假设需求拜访数组的后几个字母,那么我们只需求获取数组总长度,然后减去从后数的个数即可。
当然c#也供应了Linq查询办法,我们能够运用 Skip,Take组合获取指定方位的字母。
比如代码如下:
string[] lett数组的界说ers = { "A",索引失效的几种状况 "B", "C", "D", "E", "F", "G", "H" };
string firstLetter = letters[0];
string secondLette数组去重r = letters[1];
string lastL数组的界说etter = lett数组初始化ers[letters.Length - 1];
string penultimateLetter = letters[letters.Length -数组去重 2]数组指针;
string[] middleTwoLetters =索引 letters.Skip(2)
.Take(2)
.ToArray();
string[] everything数组去重ExceptFirstAndLast = letters.Ski数组的界说p(1)
.Take(letters.Length - 2)
.ToArray();
Console.WriteLine($"{first数组c言语Lett数组c言语er},{secondLe数组公式tter},{lastLetter},{penultimateL数组公式etter}");
Consol数组排序e.WriteLi索引页是哪一页ne($"middleTwoL数组排序etters:{string.Join(",",middleTwoLetters)}");
Console.WriteLine($"everythingExcept索引符号FirstAndLast:{string.Join(",", everythingExceptFirstAndLast)}");
A,B,H,G
middleTwoLette索引页是哪一页rs:C,D
everythingEx索引符号表明的意义ceptFirstAndL索引失效ast:B,C,D,E,F,G
2. C#引入 ^,倒叙查找元素
^ N
,N标明数组的长度,因而 ^1
标明倒数终究一个索引是什么意思元素。
例如上面的代码能够简化为如下代码索引有哪几种类型:
string[] letters = { "A", "B", "C", "D", "E", "F", "G", "H" };
string firstLetter = letters[0];
string secondLetter = letters[1];
string lastLetter = le索引的效果及优缺点tters[^1];
string penu索引的效果及优缺点ltimateLette索引r = letters[^2];
string[] midd索引的效果及优缺点le索引图TwoLetters = letters[2..4];
string[] everythingExce数组和链表的区别ptFirstAndLast = letters[1..^1];
Console.WriteLine($"{fir数组去重stLetter},{secondLetter},{lastLetter},{penultimateLetter}");
C数组指针onsole.WriteLine($"middleTwoLetter数组去重s:{索引页是哪一页string.Join(",",middleTwoLetters)}");
Console.数组函数的运用办法WriteLine($"everythingExceptFirstAndLast:{string.Join(",", everythingExceptFirstAndLast)}");
打印如下效果
A,B,H,G
middleTwoLetters:C,D
everythingExceptFirstAndLast:B,C,D,E,F,G
除了新引入的 ^N
索引符号索引页是哪一页外,还引入了 规划运算符 ..
,这容许你指定元素的规划,例如代码中的[2..4]就给了我们字母 C 和D,数组初始化或许,换句话说,它数组c言语给了我们从2初步到4结束的元素规划。
留意,终究一个索引是不包数组c言语括的,意思是,包索引有哪几种类型括2,不包括4的规划。
当然,你能够运用开放规划,标明直到初步或结束,例如: [^3..]
, [..5]
为了使新索引功用数组去重起效果,C# 引入了 Index的新结构,为了兼容规划效果域,也同样的有一个Range的新结构。
你能够直接运索引超出矩阵维度用这两个结构界说代码。
Index index = new Index(5, true);
str索引符号ing tmp = letters[index];
Range middleTwo = new Range(2, 4);
string[数组函数的运用办法] tmp2 = letters[middleTwo];
当然,你在规划运算符内也能够混用end运算符:
string[] lastThreeLetters = letters[^3..^0]; //E,F,G
string tmp3 = letters[^0]; //IndexOutOfRangeException
这儿,第一个 ^0 标明数组的结尾,由于规划的结尾是不包括的,因而不会有异常;可是 当做索引,就会发生 IndexOutOfRangeException
异常。
3.小结
当然有些新的类型也支撑 倒排索引和规划,具体的类需求参看具体的文档,这儿不再赘述。
看完这篇短文,你是不是又掌握了一种精简代码索引的效果及优缺点的办法?
感谢有你的随同,技术的路上不孤单~~
我是 web索引超出矩阵维度mote, 重视我,学习的路上不迷路!