C#中的9个“黑魔法”

2020-04-01 12:00:03于丽
Length属性和Slice(int, int)方法,即可调用Index/Range

var range2 = new F()[2..];
Console.WriteLine(range2); // 2 -> -2

class F
{
 public int Length { get; set; }
 public IEnumerable<int> Slice(int start, int end)
 {
  yield return start;
  yield return end;
 }
}

生成代码如下:

F f = new F();
int length2 = f.Length;
length = 2;
num = length2 - length;
string range2 = f.Slice(length, num);
Console.WriteLine(range2);

总结

如上所见,C#的“黑魔法”确实挺多,但“鸭子类型”也有很多,“骚操作”的“操作空间”很大。

据传C# 9.0将添加“鸭子类型”的元祖——Type Classes,到时候“操作空间”肯定比现在更大,非常期待!

到此这篇关于C#中的9个“黑魔法”的文章就介绍到这了,更多相关c# 黑魔法内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!