Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB'的正确C#转换对应项;s CTYPE()_C#_.net_Vb.net_Ado.net - Fatal编程技术网

VB'的正确C#转换对应项;s CTYPE()

VB'的正确C#转换对应项;s CTYPE(),c#,.net,vb.net,ado.net,C#,.net,Vb.net,Ado.net,下面是我正在移植到C#rewrite的VB代码片段。我的问题是,任务完成后的接收日期是什么?它仍然是对象还是字符串 Dim receipt_date As Object receipt_date = CType(dr.Item("RECTDT"), String) 这是正确的C#对应物吗 object receipt_date; receipt_date = dr["RECTDT"].ToString(); 在这两个执行之后,VB版本,receipt\u date是否等于C版本?如果没有,我

下面是我正在移植到C#rewrite的VB代码片段。我的问题是,任务完成后的接收日期是什么?它仍然是
对象
还是
字符串

Dim receipt_date As Object
receipt_date = CType(dr.Item("RECTDT"), String)
这是正确的C#对应物吗

object receipt_date;
receipt_date = dr["RECTDT"].ToString();

在这两个执行之后,VB版本,
receipt\u date
是否等于C版本?如果没有,我需要做什么才能做到这一点?谢谢

是的,你会得到同样的结果。它在语义上与VB版本不同(您显式调用
ToString()
而不是使用
CType
,后者大致相当于C#中的强制转换),但功能相同。它也更安全,因为在数据库中强制转换null值(在运行时为
DBNull
)会引发异常

不过,为了全面起见,实际的C#对等物应该是:

var receipt_date = (string)dr["RECTDT"];
不过,作为一种风格,对于简单类型,尽量避免隐式键入(即使用
var
关键字,而不是说
string
int
)<代码>变量在类型将来可能会更改时(并且不重要),或者如果类型很长和/或很复杂并且
变量
使其更具可读性时非常有用。在这种情况下,我建议:

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

VB的
CType
关键字或多或少等同于
Convert.ToString
,但并不完全相同

所以下面在VB中

Dim receipt_date As Object 
receipt_date = CType(dr.Item("RECTDT"), String) 
…最好(或最接近)用C#翻译成以下内容


顺便说一下,
CType(…,String)
被编译成
Microsoft.VisualBasic.CompilerServices.Conversions.ToString

,您意识到您的VB.NET代码强制转换为
字符串,然后强制转换回
对象,对吗?@Randolpho:No,他的VB.NET代码转换为
字符串
,并将该值分配给
对象
变量;这不是演员阵容。即使我不同意你何时使用
var
,我也会+1你。学会爱
var
@Randolpho:这是风格的问题;关于这件事已经有很多讨论了。这两种方法在任何技术意义上都是不正确的。@Adam Robinson:请参见编辑我的小姐类型。我没有写VB部分,我正在尝试在给它赋值后找出
receipt\u date
是什么类型。它是一根绳子吗?我不熟悉VB,所以我对
CTYPE
的操作持谨慎态度。小心该类型转换,它不能替代CTYPE()。CType进行值转换。Convert.ToString()与CType()做了很多事情。大概是你想要的。
object receipt_date;
receipt_date = Convert.ToString(dr.Item["RECTDT"]);