C#中的 Delphi 在语法上的等价物是什么,比如:
if (iIntVar in [2,96]) then begin //some code end;
字符串谢谢
ua4mk5z41#
我更喜欢这里定义的方法:将变量与多个值进行比较以下是乍得职位的转换:
public static bool In(this T obj, params T[] arr) { return arr.Contains(obj); }
字符串而使用量将是
if (intVar.In(12, 42, 46, 74) ) { //TODO: Something }
型或
if (42.In(x, y, z)) // do something
型
xriantvc2#
没有这样的等价物。最接近的是集合的Contains()扩展方法。范例:
var vals = new int[] {2, 96}; if(vals.Contains(iIntVar)) { // some code }
字符串
anhgbhbe3#
在.Net中,.Contains是最接近的,但语法与您编写的相反。您可以编写一个扩展方法来创建.In方法
public static bool In<T>(this T obj, IEnumerable<T> arr) { return arr.Contains(obj); }
if (42.In(new[] { 12, 42, 46, 74 }) ) { //TODO: Something }
dl5txlt94#
您可以创建此扩展方法:
public static class ExtensionMethods { public static bool InRange(this int val, int lower, int upper) { return val >= lower && val <= upper; } }
字符串那么你可以这样做:
int i = 56; if (i.InRange(2, 96)) { /* ... */ }
0lvr5msh5#
为了扩展Mason惠勒在评论中所写的内容,这将是HashSet.Contains(在.NET 3.5下)。
int i = 96; var set = new HashSet<int> { 2, 96 }; if (set.Contains(i)) { Console.WriteLine("Found!"); }
kcrjzv8t6#
你可以写一个扩展方法
public static bool In(this int value, int[] range) { return (value >= range[0] && value <= range[1]); }
dffbzjpn7#
我知道这是一个老主题,但我喜欢这个,因为它更干净。(在.NET 6中测试)
public static class FooUtils { public static bool In(this object obj, params object[] arr) { return arr.Contains(obj); } }
字符串使用方法:
int myNumber = 5; if (myNumber.In(1, 5, 10)) { // do something }
7条答案
按热度按时间ua4mk5z41#
我更喜欢这里定义的方法:将变量与多个值进行比较
以下是乍得职位的转换:
字符串
而使用量将是
型
或
型
xriantvc2#
没有这样的等价物。最接近的是集合的Contains()扩展方法。
范例:
字符串
anhgbhbe3#
在.Net中,.Contains是最接近的,但语法与您编写的相反。
您可以编写一个扩展方法来创建.In方法
字符串
而使用量将是
型
dl5txlt94#
您可以创建此扩展方法:
字符串
那么你可以这样做:
型
0lvr5msh5#
为了扩展Mason惠勒在评论中所写的内容,这将是HashSet.Contains(在.NET 3.5下)。
字符串
kcrjzv8t6#
你可以写一个扩展方法
字符串
dffbzjpn7#
我知道这是一个老主题,但我喜欢这个,因为它更干净。(在.NET 6中测试)
字符串
使用方法:
型