下面是我正在移植到C#重写的VB片段。我的问题是分配后的receipt_date
是什么?还是object
还是string
?
Dim receipt_date As Object
receipt_date = CType(dr.Item("RECTDT"), String)
这将是正确的C#对应对象吗?
object receipt_date;
receipt_date = dr["RECTDT"].ToString();
这两个都执行之后,VB版本
receipt_date
是否等于C#版本?如果没有,我该怎么做呢?谢谢 最佳答案
是的,您最终会得到相同的结果。它在语义上与VB版本不同(您在显式调用ToString()
而不是使用CType
,这在C#中大致等同于强制转换),但是在功能上是相同的。这也是更安全的,因为在数据库中强制转换为空值(在运行时中为DBNull
)将引发异常。
不过,为了全面起见,实际的C#对应项是这样的:
var receipt_date = (string)dr["RECTDT"];
不过,从风格上讲,请尽量避免对简单类型进行隐式键入(即,使用
var
关键字而不是说string
或int
)。当类型可能在将来更改(并且不重要)时,或者类型长且/或复杂且var
使它更具可读性时,var
很有用。在这种情况下,我建议:string receipt_date = (string)dr["RECTDT"];
关于c# - VB的CTYPE()的正确C#转换对应项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3231049/