Delphi的C#等价物

Pas*_*cal 10 c# delphi

对于Delphi的语法,C#中的等价物是什么,如:


  if (iIntVar in [2,96]) then 
  begin
    //some code
  end;

谢谢

Gab*_*abe 8

我更喜欢这里定义的方法:将变量与多个值进行比较

这是乍得帖子的转换:

public static bool In(this T obj, params T[] arr)
{
    return arr.Contains(obj);
}
Run Code Online (Sandbox Code Playgroud)

用法就是

if (intVar.In(12, 42, 46, 74) ) 
{ 
    //TODO: Something 
} 
Run Code Online (Sandbox Code Playgroud)

要么

if (42.In(x, y, z))
    // do something
Run Code Online (Sandbox Code Playgroud)


Ran*_*pho 5

没有这样的等价物。最接近的是集合的Contains()扩展方法。

例子:

var vals = new int[] {2, 96};
if(vals.Contains(iIntVar))
{
  // some code
}
Run Code Online (Sandbox Code Playgroud)

  • 实际上,[2..96] 会创建一个包含值 2..96 的 *set*,它使用更少的字节来表示,并且可以在 O(1) 时间内进行测试,而不是像数组那样进行线性搜索扫描需要。 (3认同)

Caf*_*eek 5

在.Net中,.Contains是最接近的,但语法与您编写的相反。

您可以编写一个扩展方法来创建 .In 方法

public static bool In<T>(this T obj, IEnumerable<T> arr)
 {
  return arr.Contains(obj);
 }
Run Code Online (Sandbox Code Playgroud)

用法是

if (42.In(new[] { 12, 42, 46, 74 }) )
{
    //TODO: Something
}
Run Code Online (Sandbox Code Playgroud)

  • 使用 params 数组使语法更好一些。42.在(12,42,46,74); (7认同)