哪个更高效的Cstr(值)或value.ToString()

Big*_*toe 9 vb.net casting

我想知道哪个更有效,使用CStr()或object.toString().我问这个的原因是因为我尽管CStr()所做的就是在它正在处理的对象上调用.ToString()方法.

但是当最近使用没有任何类型约束的泛型方法时,我不得不使用object.ToString()而不是CStr(object),以下纯粹是一个例子来说明这个问题.

Public Function IDFromObject(Of ID_TYPE)(ByVal value As ID_TYPE) As String
    Return value.ToString
End Function
Run Code Online (Sandbox Code Playgroud)

按预期编译,但以下没有使用CStr().它给出了ID_TYPE类型的编译错误值,无法转换为字符串.但它显然可以使用.ToString()

Public Function IDFromObject(Of ID_TYPE)(ByVal value As ID_TYPE) As String
    Return CStr(value)
End Function
Run Code Online (Sandbox Code Playgroud)

fre*_*tje 12

这里(不能说更好):

CStr是一个关键字,而ToString是一个函数(方法).CStr是内联编译的,它根据传递的对象的类型创建代码.这主要是因为人们习惯以前的VB版本.我已经没有在.Net中使用CStr了(因为它在哪些情况下它的作用并不明显,而且它也没有很好地记录).

差异取决于您使用的ToString函数.每种类型都可以拥有自己的实现.


Kon*_*man 8

为了便于阅读,如果我需要在VB.NET中编写代码(我是一名C#程序员),我会尽可能避免使用VB特定的关键字/函数.通过仅使用.NET类和方法,用于在其他.NET语言中开发的人员可以更容易理解您的代码.更不用说这些函数主要是为了与VB6兼容,与.NET的处理方式相比,它们看起来有点不合适.

当然可能有合理的例外,有时VB.NET真的很容易做某些任务,利用这个可以很方便; 但作为一个基本的规则,我不会使用任何VB.NET特定的功能.


bre*_*anz 6

CStr 与 ToString 之间的一大区别是 Enum 变量的处理。

CStr 返回基础数字,例如“2”,ToString 返回枚举名称,例如“LeftToRight”