开关语句中的Hasvalue

问题描述 投票:0回答:2

我试图从现有的不同变量中填入一些值,优先选择第一个填入的变量。

我的意思是这样的。

我有一个变量A 需要从另外4个变量中设置: B, C, D 和 E. 这五个变量都是可空字符串。但我只想按照从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。

但是switch期待的是一个值,而不是一个语句或方法。

我试着用很多if else语句来做,但时间一长就会变得很大。我需要一些更紧凑的东西,以便以后可以添加新的值。

有什么方法可以实现这一点,或者有其他更好的方法来解决这个问题吗?

c# basic
2个回答
7
投票

你可以尝试用链式方法 ?? 运营商。

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

1
投票

假设... HasValue 是你为字符串定义的一些方法,你可以把它们放在集合中,然后使用LINQ。

A = new [] { B, C, D, E }.FirstOrDefault(s => s.HasValue()) ?? string.Empty;
© www.soinside.com 2019 - 2024. All rights reserved.