正确的C#转换对应VB的CTYPE()

Ref*_*din 2 .net c# vb.net ado.net

下面是VB的一个片段,我正在移植到C#重写.我的问题是receipt_date作业后的内容是什么?它仍然是一个object还是一个string

Dim receipt_date As Object
receipt_date = CType(dr.Item("RECTDT"), String)
Run Code Online (Sandbox Code Playgroud)

这是正确的C#对应物吗?

object receipt_date;
receipt_date = dr["RECTDT"].ToString();
Run Code Online (Sandbox Code Playgroud)

在这两个执行后都是VB版本,receipt_date等于C#版本?如果没有,我需要做些什么才能做到这一点?谢谢

Ada*_*son 7

是的,你最终会得到相同的结果.它在语义上与VB版本不同(你ToString()明确地调用而不是使用CType,这与C#中的强制转换相当),但它在功能上是相同的.它也更安全,因为在数据库(将DBNull在运行时中)中转换空值会引发异常.

但是,为了全面,实际的C#对应物将是这样的:

var receipt_date = (string)dr["RECTDT"];
Run Code Online (Sandbox Code Playgroud)

但是,作为一种风格,尝试避免使用隐式类型(即,使用var关键字而不是说stringint)来表示简单类型.var当类型可能在将来发生变化(并且不重要)时,或者如果类型很长和/或复杂并var使其更具可读性,则非常有用.在这种情况下,我建议:

string receipt_date = (string)dr["RECTDT"];
Run Code Online (Sandbox Code Playgroud)

  • Convert.ToString()做了很多CType()的工作.大概和你想要的一样多. (2认同)