我正在用 C# 玩 Span。
我不能将 switch 语句与 span 一起使用,我必须编写这样的方法,对吗?
private int GetNumberOfLegs(ReadOnlySpan<char> animal)
{
if (animal.SequenceEqual("dog".AsSpan()))
return 4;
if (animal.SequenceEqual("cat".AsSpan()))
return 4;
if (animal.SequenceEqual("spider".AsSpan()))
return 8;
if (animal.SequenceEqual("bird".AsSpan()))
return 2;
throw new NotSupportedException($"Uknown animal {animal.ToString()}");
}
有没有更好的方法用 Span 来表达这个算法?
Abusing 模式匹配 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/switch#-the-case-statement-and-the-when-clause有帮助:
private int GetNumberOfLegs(ReadOnlySpan<char> animal)
{
switch (animal)
{
case var dog when dog.SequenceEqual("dog".AsSpan()):
return 4;
case var cat when cat.SequenceEqual("cat".AsSpan()):
return 4;
case var spider when spider.SequenceEqual("spider".AsSpan()):
return 8;
case var bird when bird.SequenceEqual("bird".AsSpan()):
return 2;
}
throw new NotSupportedException($"Uknown animal {animal.ToString()}");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)