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#版本?如果没有,我需要做些什么才能做到这一点?谢谢
是的,你最终会得到相同的结果.它在语义上与VB版本不同(你ToString()明确地调用而不是使用CType,这与C#中的强制转换相当),但它在功能上是相同的.它也更安全,因为在数据库(将DBNull在运行时中)中转换空值会引发异常.
但是,为了全面,实际的C#对应物将是这样的:
var receipt_date = (string)dr["RECTDT"];
Run Code Online (Sandbox Code Playgroud)
但是,作为一种风格,尝试避免使用隐式类型(即,使用var关键字而不是说string或int)来表示简单类型.var当类型可能在将来发生变化(并且不重要)时,或者如果类型很长和/或复杂并var使其更具可读性,则非常有用.在这种情况下,我建议:
string receipt_date = (string)dr["RECTDT"];
Run Code Online (Sandbox Code Playgroud)