if语句麻烦 - 使代码更小

-1 c# if-statement

我想让这段代码变小

if (char.IsLetter(e.KeyChar) || e.KeyChar == ',' || e.KeyChar == '/' || e.KeyChar == ';' || e.KeyChar == '<' || e.KeyChar == '>')
        {
            e.Handled = true;
        }
Run Code Online (Sandbox Code Playgroud)

但我不知道如何......请帮助

谢谢

Mat*_*gen 6

有人在评论中暗示,你可以使用Contains.

char[] allowable = new [] { ',', '/', ';', '<', '>' };

if (char.IsLetter(e.KeyChar) || allowable.Contains(e.KeyChar))
{
    e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)

你可能想static readonly在父类中创建该数组.

正如丹尼斯在下面的评论中指出的那样,一个很好的替代方案可能是:

char[] allowable = new [] { ',', '/', ';', '<', '>' };

e.Handled = char.IsLetter(e.KeyChar) || allowable.Contains(e.KeyChar);
Run Code Online (Sandbox Code Playgroud)

这肯定更短,但值得注意的是,这些并不完全是同义词.但是它们在功能上是等价的,假设您没有先前的条件而e.Handled没有调用return.

  • 甚至更短:`e.Handled = char.IsLetter(e.KeyChar)|| allowable.Contains(e.KeyChar)`. (5认同)