2012-01-13 96 views
1

我想将c#代码转换为vb.net,但我在转换符号“?”时遇到困难。在C#到VB.NET。这里我的代码转换如何转换符号“?”在C#到VB.NET?

public audit_trail Mapper(IDataReader rdr) 
{ 
     audit_trail audit_trail = new audit_trail(); 
     audit_trail.Log_id = rdr["Log_id"] is DBNull ? 0 : (int)rdr["Log_id"];    
     audit_trail.Host = rdr["Host"] is DBNull ? string.Empty : (string)rdr["Host"]; 
     return audit_trail; 
} 

如何转换符号“?”到vb.net?

我想

audit_trail.Host = rdr["Host"] is DBNull ? string.Empty : (string)rdr["Host"]; 

转换为类似

if rdr["Host"] is DBNull.Value then 
    audit_trail.Host = string.Empty 
else 
    audit_trail.Host = rdr["Host"] 
end if 

但代码太长,代码太多行..做你们有一个想法,以转换为短一个?

+3

请参阅[VB.NET中是否有条件三元运算符?](http://stackoverflow.com/questions/576431/is-there-a-conditional-ternary-operator-in-vb-net ) – BoltClock 2012-01-13 21:19:54

回答

6

三元运算符的可视基本语法是If([condition,] op1, op2)

4
audit_trail.Host = If(IsDBNull(rdr("Host")), String.Empty, CType(rdr("Host"), String))