C# 有没有一种语言具有这种简化的语法?

C# 有没有一种语言具有这种简化的语法?,c#,C#,我喜欢C#但是,例如,下面这样一个简单的a条件对于它试图实现的目标来说是非常冗长的: if ( (ctr == "BT") || (ctr = "B") ) { ctrName = "Brian"; } else if ( (ctr == "G") || (ctr = "GD") ) { ctrName = "George"; } 我在想,在一种理想的语言中,它可以被编码如下: if ctr: in {"BT", "B"}: ctr = "Brian" in {"G", "G

我喜欢C#但是,例如,下面这样一个简单的a条件对于它试图实现的目标来说是非常冗长的:

if ( (ctr == "BT") || (ctr = "B") ) {
  ctrName = "Brian";
} else if ( (ctr == "G") || (ctr = "GD") ) {
  ctrName = "George";
}
我在想,在一种理想的语言中,它可以被编码如下:

if ctr: 
  in {"BT", "B"}: ctr = "Brian"
  in {"G", "GD" }: ctr = "George"

还有其他类似的语言吗?

您可以在许多语言中轻松实现这一点,包括C#,并使用switch语句:

switch (ctr)
{
    case "BT":
    case "B":
        ctrName = "Brian";
        break;

    case "G":
    case "GD":
        ctrName = "George";
        break;
}
相同的switch语句减少了换行次数,从而更接近您的示例:

switch (ctr)
{
    case "BT": case "B": ctrName = "Brian"; break;
    case "G": case "GD": ctrName = "George"; break;
}

如果这对您来说太冗长,那么在C#中就没有其他选择了。如果你特别想找一种替代语言,那就不适合这个网站了。

你可以用多种语言轻松做到这一点,包括C#,并使用switch语句:

switch (ctr)
{
    case "BT":
    case "B":
        ctrName = "Brian";
        break;

    case "G":
    case "GD":
        ctrName = "George";
        break;
}
相同的switch语句减少了换行次数,从而更接近您的示例:

switch (ctr)
{
    case "BT": case "B": ctrName = "Brian"; break;
    case "G": case "GD": ctrName = "George"; break;
}

如果这对您来说太冗长,那么在C#中就没有其他选择了。如果你特别想寻找另一种语言,那就不是网站的主题了。

有一种语言就是这样的!C#-通过扩展方法

下面是一个示例,使用扩展方法中的

using System;
using System.Linq;

namespace Bob
{
    public static class Extensions
    {
        public static bool In<T>(this T toCheck, params T[] isItInOneOfThese)
        {
            return isItInOneOfThese.Contains(toCheck);
        }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            var ctrName = "";
            var ctr = "BT";

            if (ctr.In("BT", "B"))
            {
                ctrName = "Brian";
            }
            else if (ctrName.In("G", "GD"))
            {
                ctrName = "Brian";
            }
            Console.WriteLine(ctrName);
            Console.ReadLine();
        }
    }
}
使用系统;
使用System.Linq;
名称空间Bob
{
公共静态类扩展
{
公共静态bool-In(此T-toCheck,参数T[]为其中之一)
{
返回IsiToneofthes.Contains(toCheck);
}
}
公共课程
{
静态void Main(字符串[]参数)
{
var ctrName=“”;
var ctr=“BT”;
如果(中央银行(“BT”、“B”))
{
ctrName=“布赖恩”;
}
如果(ctrName.In(“G”、“GD”))
{
ctrName=“布赖恩”;
}
Console.WriteLine(ctrName);
Console.ReadLine();
}
}
}

有一种语言就是这样的!C#-通过扩展方法

下面是一个示例,使用
扩展方法中的

using System;
using System.Linq;

namespace Bob
{
    public static class Extensions
    {
        public static bool In<T>(this T toCheck, params T[] isItInOneOfThese)
        {
            return isItInOneOfThese.Contains(toCheck);
        }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            var ctrName = "";
            var ctr = "BT";

            if (ctr.In("BT", "B"))
            {
                ctrName = "Brian";
            }
            else if (ctrName.In("G", "GD"))
            {
                ctrName = "Brian";
            }
            Console.WriteLine(ctrName);
            Console.ReadLine();
        }
    }
}
使用系统;
使用System.Linq;
名称空间Bob
{
公共静态类扩展
{
公共静态bool-In(此T-toCheck,参数T[]为其中之一)
{
返回IsiToneofthes.Contains(toCheck);
}
}
公共课程
{
静态void Main(字符串[]参数)
{
var ctrName=“”;
var ctr=“BT”;
如果(中央银行(“BT”、“B”))
{
ctrName=“布赖恩”;
}
如果(ctrName.In(“G”、“GD”))
{
ctrName=“布赖恩”;
}
Console.WriteLine(ctrName);
Console.ReadLine();
}
}
}

这两个单=s打字错误吗?为什么不linq to dictionary取决于您试图匹配的内容,一个
RegEx
匹配可能是合适的(不是针对这种情况,而是针对您试图匹配更复杂变体的内容)。或者,如果您可以保证
ctr
不包含像
|
这样的特定字符,则可以使用
String.Contains
,例如
“BT | B”。Contains(ctr)
。或者您也可以使其不区分大小写(请参见)@BoltClock Oops,耶[blush]这两个single=s打字错误是吗?为什么不将linq改为dictionary呢取决于您试图匹配的内容,
RegEx
匹配可能是合适的(不是针对这种情况,而是针对您试图匹配更复杂变体的内容)。或者,如果您可以保证
ctr
不包含像
|
这样的特定字符,则可以使用
String.Contains
,例如
“BT | B”。Contains(ctr)
。或者你也可以使它不区分大小写(参见)@BoltClock-Oops,耶[脸红]