if语句麻烦 - 使代码更小

时间:2014-11-28 05:54:40

标签: c# if-statement

我想让这段代码更小

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

但我不知道怎么......请帮忙

由于

2 个答案:

答案 0 :(得分:6)

如有人在评论中暗示,您可以使用Contains

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

if (char.IsLetter(e.KeyChar) || allowable.Contains(e.KeyChar))
{
    e.Handled = true;
}

您可能希望在父类中创建该数组static readonly

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

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

e.Handled = char.IsLetter(e.KeyChar) || allowable.Contains(e.KeyChar);

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

答案 1 :(得分:0)

2行?

char[] allowableChars = new [] { ',', '/', ';', '<', '>' };
e.handled = (char.IsLetter(e.KeyChar) || allowableChars.Contains(e.KeyChar));