我正在使用以下代码:
var values = new[] { 15, 30, 50 };
if (Settings.Rev == REV.No && values.Any(v => v == Settings.Trk2))
有没有一种方法可以消除分配给值的需要,而在这种情况下可以直接执行Any?如果我这样做,谁能看到可能出现的任何问题?
还有一种方法,我可以通过左侧的Settings.Trk2之类的东西来反转它,以使其更清楚我想检查它的值是15、30还是50?
答案 0 :(得分:3)
您可以这样写:
if (Settings.Rev == REV.No && (new[] { 15, 30, 50 }).Contains(Settings.Trk2))
当使用Settings.Rev != REV.No
时,这种方法会更好一些,因为在这种情况下甚至不会创建数组。
我建议您将所有值放在HashSet<int>
中,以快速检查它是否包含指定值。
var set = new HashSet<int> { 15, 30, 50 };
if (Settings.Rev == REV.No && set.Contains(Settings.Trk2))
...
最好将HashSet
构造一次,然后再进行更新。这意味着您需要将HashSet
定义为类的字段并使用它。
答案 1 :(得分:2)
您可能可以这样做:
Open Text File...
对于数组,我可能会坚持使用数组方法而不是LINQ。 就个人而言,我更喜欢可读性,而不是减少行数。
更新:
if (Settings?.Rev == REV.No && Array.IndexOf(new[] { 15, 30, 50 }, Settings?.Trk2) != -1)