if 语句麻烦 - 使代码更小

本文关键字:代码 语句 麻烦 if | 更新日期: 2023-09-27 18:32:15

我想让这段代码更小

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

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

谢谢

if 语句麻烦 - 使代码更小

正如有人在评论中暗示的那样,您可以使用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);

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

2 行?

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