我试图从现有的不同变量中填入一些值,优先选择第一个填入的变量。
我的意思是这样的。
我有一个变量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语句来做,但时间一长就会变得很大。我需要一些更紧凑的东西,以便以后可以添加新的值。
有什么方法可以实现这一点,或者有其他更好的方法来解决这个问题吗?
你可以尝试用链式方法 ??
运营商。
A = B ?? C ?? D ?? E ?? string.Empty;
假设... HasValue
是你为字符串定义的一些方法,你可以把它们放在集合中,然后使用LINQ。
A = new [] { B, C, D, E }.FirstOrDefault(s => s.HasValue()) ?? string.Empty;