我正在使用C#在Span上玩游戏。
我是对的,我不能使用带有span的switch语句,我必须编写这样的方法吗?
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表示此算法?
答案 0 :(得分:1)
滥用pattern matching有帮助:
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()}");
}