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

2023-11-25

我(显然是错误的)假设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 type?


The ToString方法是一个标准的公共方法,它返回一个String。这是一个由基础定义的方法Object类型为可覆盖。因此,每个类都可以重写该方法以返回它想要的任何内容。类重写是很常见的ToString方法使其返回对象的可读性良好的描述。

CStr另一方面,是铸造操作员。它是简写CType(x, String)。与许多其他运算符一样,强制转换运算符可以被任何类覆盖。不过,通常情况下,您希望转换操作返回原始对象实际值的最接近表示,而不是描述性字符串。

那么,您可能想要的情况并不罕见ToString返回与以下不同的结果CStr。对于枚举来说,每个成员本质上都是一个整数,所以CStr在枚举成员上的作用与CStr在一个整数上。这正是您所期望的。然而,ToString已被覆盖以返回更易于人类阅读的值版本。这也是您所期望的。

这是一个覆盖两者的类的示例CStr and 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理 Enum 类型时 CStr() 与 .ToString 的比较 的相关文章

  • Office 365 和经典 ASP 与 VB.net SMTP 设置

    有几个关于经典 ASP 和 Office 365 的问题 但似乎没有一个问题可以回答我的特定场景 所以这里是 我在 Office 365 上设置了一个电子邮件帐户 并尝试使用以下代码进行 SMTP 测试 Dim ObjSendMail ma
  • 为 winforms ComboBox 中的单个项目着色?

    我遇到了一个困境 我有一个表单 其中包含许多组合框 其中包含在某些情况下可能无效 过时的信息 选项 项目 我不能简单地从项目中删除过时的信息 但我确实想在选项无效时为用户提供视觉线索 我正在考虑对项目进行着色 可能是红色 来指示它们是否无效
  • .Net 2 迭代器的巧妙使用[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 C 2 和 VB Net 8 引入了一项新功能 称为迭代器 http msdn microsoft com en us library dscy
  • 中断/退出嵌套在 vb.net 中

    如何摆脱 vb net 中的嵌套 for 或循环 我尝试使用 exit for 但它只跳转或中断了一个 for 循环 我怎样才能做到以下几点 for each item in itemList for each item1 in itemL
  • 如何在 VB.NET 中将 DataGridView 导出为 Excel 格式

    我使用 OLE 通过 VB NET 连接到数据库 并在 DataGridView 中显示结果 我想将 DataGridView 中的数据导出到 Excel 格式文件 即用户可以将 DataGridView 的内容保存为 MS Excel 文
  • 带分页的自定义数据表

    我正在使用我的自定义DataTable as a DataSource to my ListView 现在 我面临的问题是Paging不管用 我想做的是当我点击页面时1 2等等 我应该一次只能获取 10 行 我的意思是 当页面加载时 我只想
  • 设置外部应用程序焦点

    在 VB NET 中 您可以使用以下命令将焦点设置到外部应用程序 AppActivate Windows Name or AppActivate processID As Integer 现在 如果您这样做 则效果很好 Dim intNot
  • 将 C# Web 表单添加到 VB Web 应用程序

    有没有办法将 C Web 窗体添加到用 VB NET 编写的 ASP NET 4 0 Web 应用程序中 我有一个 ASP NET 2 0WEB SITE我最近转换为 ASP NET 4 0WEB应用程序 它主要是用 VB NET 编写的
  • VB.NET 密码哈希函数的 PHP 等效项 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有以下 Visual Basic NET 函数 用于生成存储在内部数据库中的密码哈希值 Public Function HashPass
  • IIS7.5 WCF 服务 - HTTP 错误 401.3(即使在添加 IIS_IUSRS 后)

    我们有使用 NT Authority Network Service 的网站 Response Write WindowsIdentity GetCurrent Name 该网站使用托管在 IIS 7 5 中的 WCF 服务 当我们浏览服务
  • 忽略不区分大小写的字典键中的连字符

    我在 asp net vb net 中有一个不区分大小写的字典 如下所示 Dim caseInsensitiveDictionary New Dictionary Of String Single StringComparer Ordina
  • 当 InternalsVisibleToAttribute 不是一个选项时,如何使用反射对程序集中的内部(VB 中的 Friend)类进行单元测试?

    我有一个包含两个项目的解决方案 Company Project vbproj Company Project Tests vbproj 内Company Project vbproj集会 我有课FriendClass vb哪个范围是Frie
  • 在word中添加超链接,使用vb.net

    我目前正在尝试通过 VB 程序在 word 中添加一个指向 web url 的超链接 我正在跌跌撞撞地尝试找到正确的语法以及完成此任务所需的内容 因为我收到了很多无用的 VBA 示例 而这根本不是我需要的 我的代码如下所示 sPara2 o
  • 模式弹出窗口上的按钮单击事件,在网格视图内未触发

    我遇到以下问题 场景 我有一个 asp 网格 其中有一些绑定到数据的列 最后一列已转换为模板字段 在这个模板字段中有一个按钮 上面附加了一个模式弹出扩展器 该字段中隐藏着一个模式弹出窗口 此模式弹出窗口用于添加新帐户 它包含 2 个文本框
  • “更新/取消”按钮不会出现在模板字段编辑按钮中

    当您使用 Gridview 的每一行创建编辑按钮时CommandField单击后它会显示更新 取消按钮 以便您可以接受 取消更改 但是 我想要一个带有工具提示文本的编辑按钮 因为CommandField没有工具提示属性 我用过Templat
  • 不建议在 VB.Net 中使用 Mid()、Instr()、LBound()、UBound() 等吗?

    我有 C 背景 但现在主要使用 VB Net 在我看来 上述函数 以及其他函数 例如 UCase LCase 等是 VB6 及之前版本的遗留物 在 VB Net 中使用这些函数是不受欢迎的 还是纯粹取决于个人喜好 我个人的偏好是远离它们 但
  • Vb.net 捕获 Ctrl+C

    I want to capture when someone uses CtrlC even when off focus im using Visual Basic 2010 好的 我为您提供了一个经过验证有效的解决方案 不过 您将需要一
  • 如何在 vb.net 中使用 Stacktrace 返回错误行号

    我正在尝试创建某种错误捕获方法来返回错误行号 当进程中止时 我们会发送一封中止电子邮件 该电子邮件为我们提供了错误号 and 错误描述但我想知道实际上哪里出了错误 我知道你可以执行以下操作 1 code here 2 code here 3
  • VB - 如何读取和写入二进制文件?

    如何从任何文件读取原始字节数组 Dim bytes as Byte 然后将该字节数组写回到新文件中 我需要它作为字节数组来在两者之间进行一些处理 我目前正在使用 To read Dim fInfo As New FileInfo dataP
  • 某些笔记本电脑中的 VB.net Forms UI 显示问题

    我是 VB 应用程序的新手 无法弄清楚我的应用程序出了什么问题 有一个带有几个标签和文本字段的表单 当我在我和其他人的机器上运行该应用程序时 它显示良好 并具有正确的对齐和字体 然而 对于某些人来说 应用程序表单 UI 是破碎的 未对齐的文

随机推荐

  • 使用 Python 时,这段代码中的“wb”是什么意思?

    Code file pinax media a jpg wb 文件模式 写入和二进制 由于您正在编写 jpg 文件 因此看起来不错 但是如果你想读取 jpg 文件 你需要使用 rb 更多信息 在 Windows 上 b 附加到模式后 以二进
  • 将 JTextArea 复制为“text/html”DataFlavor

    我有一个JTextArea我正在使用Highlighter按照下面的 SSCCE 对我的某些文本应用一些语法突出显示 import java awt import java awt event import javax swing impo
  • 如何在 Activity 和 widget 之间共享数据?

    我阅读了 hellowidget 教程和开发指南的应用程序小部件 然后我知道如何创建一个包含按钮或文本或其他内容的小部件 但我真正想做的是让它与我的应用程序交互 例如 我想创建一个具有文本视图的小部件 当我单击它时 它会向我的活动发送一个
  • 查找已安装的 JDBC 驱动程序

    我正在用 Java 编写一个数据库验证工具 并具有首选项屏幕 以便用户可以定义他们的数据库连接 该工具至少应该能够处理 DB2 Oracle Postgresql 和 Mysql 我真正想要的是能够向用户展示他们已安装的 jdbc 驱动程序
  • 如何在 iOS 9 中的 UIAlertController 中添加按钮

    我们如何使用UIAlertView在 iOS 9 中以及如何添加按钮UIAlertController UIAlertController alert UIAlertController alertControllerWithTitle T
  • 为什么 Eclipse 的 Android 设备选择器不显示我的 Android 设备?

    我正在使用 Eclipse 的 Android 插件 当我尝试通过真实设备运行我的程序时Android 设备选择器 我的手机未列为设备 我已经更新了 Eclipse 所有 Android 软件包和 USB 驱动程序 但它仍然没有显示 我的手
  • 如何让SceneView的背景透明?

    我想打开一个 3D 模型并使其背景透明 以便我可以看到 SceneView 后面的 UI 我试过这段代码 但 sceneView 变成白色 不透明 struct ModelView View var body some View ZStac
  • Spring Data Cassandra LocalDateTime 转换

    我正在开发一个项目 其中我们有一个实体 我们想要保留 LocalDateTime 类型的字段 我们知道 cassandra 没有对此类型转换的本机支持 我们使用 Spring 对转换器的支持创建了自己的自定义转换器 然而 Spring Da
  • Android 启用和禁用 GPS [重复]

    这个问题在这里已经有答案了 可能的重复 像 Tasker 一样以编程方式启用 GPS 我是一名初学者 Android 开发者 我想通过单击按钮来启用和禁用 GPS 而不运行此意图 intente in new Intent android
  • 如何使用Python中的套接字响应代理服务器中的“CONNECT”方法请求?

    我目前正在使用 httplib 编写代理服务器 当我尝试连接到 HTTPS 网站 例如 facebook 和 google 时 我的客户端向我发送 CONNECT 请求 如下所示 CONNECT www google co il 443 H
  • PHP 命名空间可以包含变量吗?

    PHP 命名空间可以包含变量吗 如果是这样 如何实现这一点 不可以 您可以在声明命名空间后设置变量 但变量将始终存在于全局范围内 它们永远不会绑定到名称空间 您可以从缺少任何名称解析描述的情况中推断出这一点 常见问题解答 有关命名空间您需要
  • 不使用 NewID() 的 SQL 上的随机数

    您好 我想生成一个唯一的随机数 而不使用以下语句 Convert int CHECKSUM NEWID 100000 AS ITEM 因为当我在 from 上使用连接子句时 它通过使用 NEWID 生成双寄存器 我使用 SQL Server
  • 如何在MySQL中进行级联更新?

    Let s look at this example database 正如我们所看到的 person 取决于城市 person city id 是外键 我不删除行 只是将它们设置为非活动状态 活动 0 将城市设置为非活动状态后 如何自动将
  • 默认导出类的新实例

    下面的代码片段每次导入时都会生成新实例吗 1st implementation class ConnectionManager export default new ConnectionManager 2nd implementation
  • google api javascript 登录用户的电子邮件

    有许多资源和堆栈溢出问题与我将要问的类似但不完全相同 我将在这里重新讨论一些解决方案并进行解释 我有一个已经登录 Google 的用户 我所说的登录是指手动登录并且存在 cookie 我的应用程序未登录 我只需要获取电子邮件地址 我见过 3
  • 哈希集的哈希码和等于[重复]

    这个问题在这里已经有答案了 请澄清我对 Hashset 的疑问 考虑下面的代码 class Person String name Person String n name n public String getName return nam
  • “写入输出时出现问题:字段引用太多:70185;最大值为 65536。您可以尝试使用 --multi-dex 选项。”构建Android项目时

    我遇到了这个错误 但没有找到错误消息 所以我想我应该分享我想出的解决方案 以防止其他面临问题的人重复我的工作 当编写一个新的 Android 库 apklib 以在 大型 应用程序中使用时 当我将新项目添加为依赖项时 我在 dexing 过
  • jquery 设置焦点于动态内容?

    在 jquery 中我附加了一个 li 元素到无序列表 我如何专注于新创建的 li li 如果我执行以下操作 ul append li li li
  • 使用 ios 7 视差效果移动图像

    我刚刚看到 Facebook 的新纸质应用程序 它可以根据视差效果使图像移动 因此 它将图像缩放到全屏 当您倾斜屏幕时 它会将图像滚动到您倾斜的一侧 我已经能够像苹果那样添加视差效果 但不能像 Facebook 那样添加视差效果 有谁知道他
  • 处理 Enum 类型时 CStr() 与 .ToString 的比较

    我 显然是错误的 假设Cstr something 相当于something ToString 我想将枚举类型作为字符串来获取 这似乎取决于我使用的转换方法 我要么获取该类型的索引enum或名称 Public Enum vehicleTyp