2014-03-07 57 views
0

我在我的代码做这个:串三元运算符语法糖

destImp.Cap = (addr.location.postcode != "?") ? addr.location.postcode : null; 
destImp.Civico = (addr.location.street != "?") ? addr.location.street : null; 
destImp.Localita = (addr.location.city != "?") ? addr.location.city : null; 
destImp.Indirizzo = (addr.location.street != "?") ? addr.location.street : null; 

但它的繁琐冗长。有一种方法可以达到相同的结果,但语法更好?

+5

您可以定义在'string'扩展方法,叫做说'NULLIF()',它包装起来这个测试。 –

+0

你至少可以编写一个方法(或一个本地lambda)。 –

+2

有没有办法阻止一个'?'在这些领域呢?如果一条街叫做'?'会怎么样? –

回答

9

您可以创建一个扩展方法:

public static string NullIf(this string str, string nullMarker) 
{ 
    return str == nullMarker ? null : str; 
} 

那么你可以做:

destImp.Cap = addr.location.postcode.NullIf("?"); 
... 
+0

这就是獾。 –