gpt4 book ai didi

vb.net - 处理 Enum 类型时 CStr() 与 .ToString 的比较

转载 作者:行者123 更新时间:2023-12-03 16:07:57 25 4
gpt4 key购买 nike

我(显然是错误的)假设 Cstr(something)相当于something.ToString .
我想将枚举类型作为字符串保存,似乎取决于我使用的转换方法,我要么得到 enum 的索引或名称:

Public Enum vehicleType
Car
Lorry
Bicycle
End Enum

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Index is " & _
CStr(vehicleType.Car) & _
".Name is " & _
vehicleType.Car.ToString)
End Sub
End Class

为什么这些到字符串的转换会返回 enum 的不同元素?类型?

最佳答案

ToString方法是一个标准的公共(public)方法,它返回 String .它是由基 Object 定义的方法类型为可覆盖。因此,每个类都可以重写该方法以返回它想要的任何内容。类覆盖 ToString 是很常见的。方法使它返回一个很好的人类可读的对象描述。
CStr ,另一方面,是一个类型转换运算符。它是 CType(x, String) 的简写.与许多其他运算符一样,强制转换运算符可以被任何类覆盖。但是,通常情况下,您希望转换操作返回原始对象实际值的最接近表示,而不是描述性字符串。

这并不罕见,您可能想要 ToString返回与 CStr 不同的结果.在枚举的情况下,每个成员本质上都是一个整数,所以 CStr在枚举成员上的工作方式与 CStr 相同在一个整数上。这就是你所期望的。但是,ToString已被覆盖以返回更易于阅读的值版本。这也是你所期望的。

这是一个覆盖 CStr 的类的示例。和 ToString :

Public Class MyClass
Public Overrides Function ToString()
Return "Result from ToString"
End Function

Public Shared Widening Operator CType(ByVal p1 As MyClass) As String
Return "Result from cast to String"
End Operator
End Class

关于vb.net - 处理 Enum 类型时 CStr() 与 .ToString 的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14013227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com