Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# switch语句中的Hasvalue_C# - Fatal编程技术网

C# switch语句中的Hasvalue

C# switch语句中的Hasvalue,c#,C#,我试图用不同的现有变量中的一些值来填充现有变量,并对第一个填充值变量进行优先级排序 我的意思是: 我有一个变量A需要从其他4个变量B、C、D和E中设置。所有5个变量都是可为空的字符串。但我只想按从B到E的顺序设置优先级 这是我想得到的一个例子: switch(HasValue()) { case(B): A = B; break; case(C): A = C; break; case(D): A

我试图用不同的现有变量中的一些值来填充现有变量,并对第一个填充值变量进行优先级排序

我的意思是:

我有一个变量A需要从其他4个变量B、C、D和E中设置。所有5个变量都是可为空的字符串。但我只想按从B到E的顺序设置优先级

这是我想得到的一个例子:

switch(HasValue())
{
   case(B):
        A = B;
        break;
   case(C):
        A = C;
        break;
   case(D):
        A = D;
        break;
   case(E):
        A = E;
        break;
   default:
        A = string.empty;
        break;
因此,如果变量D有值,则将A设置为D。如果B和D都有值,则选择B

但开关需要的是值,而不是语句或方法

我试着用很多if-else语句来表达,但这会让我加班加点。我需要一些更紧凑的,我可以添加新的价值以后


是否有一种方法可以实现这一点,或者有其他更好的方法来解决它?

假设
HasValue
是您为字符串定义的某种方法,您可以将它们放入集合并使用LINQ:

A = new [] { B, C, D, E }.FirstOrDefault(s => s.HasValue()) ?? string.Empty;

假设
HasValue
是您为字符串定义的某种方法,您可以将它们放在集合中并使用LINQ:

A = new [] { B, C, D, E }.FirstOrDefault(s => s.HasValue()) ?? string.Empty;

您可以尝试链接
??
操作员:

 A = B ?? C ?? D ?? E ?? string.Empty;

您可以尝试链接
??
操作员:

 A = B ?? C ?? D ?? E ?? string.Empty;

您是否尝试过使用if-else语句和&,| |运算符?
A=B??CDE
您是否尝试过使用if-else语句和&、| |运算符?
A=B??CDE