下面是我正在移植到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关键字而不是说stringint)。当类型可能在将来更改(并且不重要)时,或者类型长且/或复杂且var使它更具可读性时,var很有用。在这种情况下,我建议:

string receipt_date = (string)dr["RECTDT"];

关于c# - VB的CTYPE()的正确C#转换对应项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3231049/

10-14 05:10