转换数据类型为 Option Strict

2023-12-15

我只是想知道如何正确

  1. 将字符串转换为日期
  2. 将整数转换为短整型
  3. 将字符串转换为整数
  4. 将字符串转换为双精度

正确地不使用任何类型。我打开了 Option Strict,现在所有这些错误都弹出了,所以我正在尝试修复它们:)


NET 提供了多种检查、测试和转换数据的方法。

TryParse

这也许是最可靠的转换方式。它非常适合验证用户输入:

Dim n As Int32
If Int32.TryParse(TextBox.Text, n) Then
    ' work with n
Else
    ' error handling: TextBox.Text cannot convert to int
End If

所有核心数据类型都支持它(Int64, Decimal, DateETC)。它与其他的不同:它不返回转换后的值,而是返回一个Boolean指示源字符串是否可以转换为变量。

Parse

Dim d as Double = Double.Parse(strVar) 

创建代码时可以使用它strVar你知道它包含数字而不是标点符号等。Parse and TryParse两者都允许您通过提供一个来解析来自其他文化的数据FormatProvider和其他选项:

Dim strDec = "$ 123.45"
Dim decVal As Decimal = Decimal.Parse("$123.45", NumberStyles.Currency)

其他方法会因“$”而阻塞,样式参数允许它。

转换.ToInt32 / 转换.ToInteger

这个有很多很多重载:

Dim intV As Int32 = Convert.ToInt32(aString)
Dim dblV As Double = Convert.ToDouble(aString)
Dim lngV As Int64 = Convert.ToInt64(aString)

The Convert.Toxxx方法比上面的方法稍微不那么专业。他们允许文化转变,但他们假设直接转换是可能的。也就是说,“123”将转换为整数,但不会转换为“123.45”,并且它不知道诸如货币格式之类的任何内容。

因此,当您知道该值可以转换(可能是因为您将值转换为字符串)时,请使用此选项。这些也可以用于从数据库中取消对象的装箱DataReader:

myDT = Convert.ToDateTime(rdr("BirthDate"))
myV = Convert.ToInt32(rdr("FooValue"))

假设数据实际上存储为这些类型并“装箱”为对象DBDataReader, Convert会工作得很好。 (请注意,DBDataReaders 可以直接返回类型化数据:n = rdr.GetInt32(1)但不能使用列名,只能使用序号位置)。

CInt、CSng...等

CInt类似于Convert.ToInteger,但根据 MSDN 针对在 VB 中的使用进行了优化。例如:

a = Convert.ToInt32("123.50")     ' exception due to decimal point
a = CInt("123.50")                ' a = 124

令人困惑?是的,但是一旦掌握了它们,您就可以使用最适合情况的方法。无法指定文化CInt, CDec etc.

Val

不要使用Val。曾经。这是一个非常通用的函数,它返回一个Double。使用它可能会导致各种不良的类型转换:

Dim n = Val(tbSmallValue.Text)

n创建为 Double,因此如果文本框为“5”,则n = 5.0. When n在需要整数的地方使用(例如插入数据库)可能会发生错误。结果差别很大:

dd = Val("123.4")          ' = 123.4
dd = Val("$123.45")        ' = 0.0
dd = Val("123abc")         ' = 123.0

NB CInt and Convert.ToInt32实施“银行家四舍五入”,其中.50分数四舍五入为最接近的偶数. 123.50 and 124.50都舍入/转换为124.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

转换数据类型为 Option Strict 的相关文章

  • 将二维数组绑定到数据网格中

    所以我的情况是我想从数据库中的两个字段填充一个二维数组 我在为数组分配数据库字段值时遇到问题 第二个是在数据网格中显示数组 我已经编码了 dgv2 Datasource myArray 但它仍然返回错误消息 这是我的代码 Dim msql
  • 正则表达式 VB.Net 正则表达式.替换

    我正在尝试执行一个简单的正则表达式查找和替换 在字符串中的一些数字后面添加一个制表符 如下所述 From a users 12345 badges To a users 12345 badges 我正在使用以下内容 s regex repl
  • 通过访问硬盘序列号来保护软件[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想获得VB NET或VB代码来在启
  • VB.NET 中的自动递增文本框

    单击按钮后如何增加文本框内容 将其放在按钮单击事件中 Dim int As Integer Integer TryParse TextBox1 Text int TextBox1 Text int 1
  • 跨线程操作无效 VB.NET

    我浏览了该网站 发现与该主题相关的问题是针对 C 的 我正在维护的应用程序是用 VB NET 编写的 因此 如果我忽略了一个问题 我深表歉意 这是我调用我的线程的地方 Private Sub saveBtn Click ByVal send
  • 安装文件失败调试已启用

    我之前使用过安装项目 没有任何问题 该项目没有 SQLite DB 作为依赖项我现在正在尝试为一个包含 SQLite 作为 System Data SQLite Core 的项目制作一个 EXE 或 msi 文件 该项目是一个带有 WPF
  • 如何使用鼠标拖动和移动winform

    我知道如何通过添加以下代码来 拖动和移动 winform Protected Overrides Sub WndProc ByRef m As Message If m Msg 163 And ClientRectangle Contain
  • 如何在 ASP.NET 中检查用户是否在线?

    该网站 最后活动 1 分钟前来自此 IP 地址 背后的逻辑是什么 如果您在隐藏字段中获取用户的 IP 地址 我该如何在 vb net 中执行此操作 我如何查看有多少用户在线使用该应用程序 ASP NET 会员服务支持此功能 要获取特定用户的
  • 使用 .NET 将两个 PNG 图像合并为一张图像

    我有两个 其实很多 PNG http en wikipedia org wiki Portable Network Graphics png 我的应用程序中的图像 两者都有透明区域 我想在我的应用程序中拍摄两个图像 将它们组合起来 并将结果
  • HTML Agility 包删除了中断标记 close

    我正在使用 HTML 敏捷包创建 HTML 文档 我加载一个模板文件 然后将内容附加到其中 所有这些都有效 但是当我查看输出文件时 它已从我的文件中删除了结束标记 br 标签看起来像这样 br 是什么原因造成的 Dim doc As New
  • 使用VB.NET查找当前登录用户的用户名

    我正在尝试获取当前用户的用户名 当我登录时Johnny Smith并在没有管理员权限的情况下运行我的应用程序 它将返回正确的用户名 Johnny Smith 但问题是 当我右键单击并选择 以管理员身份运行 时 Windows 将提示我管理员
  • 如何在VB.NET中画一条线

    我正在尝试用 VB NET 画一条简单的线 我的代码如下 但是当我运行代码时 只显示表单 没有线 我在这里做错了什么 Public Class Form1 Dim pen As System Drawing Graphics Private
  • 多个 Visual Studio 项目抱怨临时文件丢失,因此无法打开。错误代码 &H80070003

    我在终端服务器上运行 Visual Studio 2010 并且已经运行了一段时间 问题相对较少 今天早上 我启动了我的电脑 在英国的长周末期间 似乎出现了以下问题 我有很多项目 但不是我的所有项目 也不是给定解决方案中的所有项目 抱怨无法
  • 如何在.NET 中编写安全/正确的多线程代码?

    今天我必须修复一些使用线程的旧 VB NET 1 0 代码 问题在于从工作线程而不是 UI 线程更新 UI 元素 我花了一些时间才发现可以使用 InvokeRequired 断言来查找问题 除了上面提到的并发修改问题之外 还可能遇到死锁 竞
  • .NET 图形重影

    我正在为我们正在开发的新应用程序制作一个示例 GUI 我已经决定了语言 但我可以使用任何第 3 方 DLL 或插件或任何我需要的东西 以使 GUI 尽可能无缝地工作 他们希望它非常像 mac ubuntu vista Windows 7 所
  • 打印对话框不显示在 64 位计算机上的 Crystal Report Viewer 中

    我有一个运行 Windows 2008 Server 64 位的客户端 他正在运行我们的软件 它具有内置的水晶报表查看器功能 无论如何 打印对话都行不通 它在我们的 32 位机器上运行并且我们验证了它 我在我们的 64 位机器上验证了它 打
  • DataGridView 使用 Structure 和 LINQ 来排序 txt 文件

    当我的程序出现问题时 我能够将所有数据拉入网格并进入正确的列 行 但是 我相信我的 LINQ 查询是错误的 它没有使第三列正确划分并插入正确的数据 我的结果 https gyazo com 0f307a10dff4c015a361708ec
  • 如何使用 winforms 在 vb.net 中制作大型按钮网格(24x20 或类似)?

    我正在 vb net WinForms 中制作一个座位预订系统 我需要用户能够选择他们想要使用的座位并改变颜色 这样他们就可以知道它已选择 我开始尝试使用按钮 但 480 个按钮严重减慢了表单的加载时间 然后我尝试了在行 列中带有按钮的数据
  • 如何创建未定义的循环计数

    我正在尝试创建一个程序 它将循环遍历所有字母 我想要例如显示aaaa then aaab to aaaz then aaba依此类推zzzz 问题是 如何让用户输入字母计数 这是我的代码 只有 3 个字母 Dim abc As String
  • 项目:为了评估索引属性,该属性必须经过限定,并且参数必须由用户显式提供。

    我创建了多个组合框 从中我从创建的存储过程中提取了每个组合框的数据 所有这些框一直工作到今天早些时候 其中 2 个组合框停止工作 检查行的 立即窗口 和列 我得到了列的结果 但是当我检查列时 例如 dsContactTitles Table

随机推荐

  • 使用标签时如何使用Onclick事件

    我有两个java类 and 两种布局对于两个班级来说 每个layout正在拥有一个button在里面 两个班级都在延长Activity 现在在我使用的第一个布局中include像这样标记
  • 使用 Web API 在 jqGrid 中添加/编辑/删除

    我是 jqGrid 的新手 需要一些关于表单添加 编辑 删除功能的帮助 目前还没有找到相关资源 我的网格在添加 编辑时显示弹出窗口 还在单击编辑时填充数据 但是我不确定应该使用什么 javascript 代码来调用 Web api 来发布
  • scanf("%c", &c) 和 scanf(" %c", &c) 之间的区别[重复]

    这个问题在这里已经有答案了 考虑以下 C 代码片段 include
  • 如何在 PyTorch 中打印模型摘要?

    如何在 PyTorch 中打印模型的摘要 如下所示model summary 在 Keras 中执行的操作 Model Summary Layer type Output Shape Param Connected to
  • BackgroundWorker 从循环中执行 UI 更新

    我正在 BackgroundWorker 的 DoWork 内循环创建 ViewModel 对象 我报告每次迭代的进度 将新对象作为参数传递以由 ProgressChanged 处理程序 它是 UI 线程的朋友 检索 在该处理程序中 对象被
  • Windows Phone 7 列表框加载数据的进度条

    当列表框完成加载其数据时 是否有一个我可以监听的事件 我有一个文本框和一个列表框 当用户按 Enter 键时 列表框将填充来自 Web 服务的结果 我想在列表框加载时运行进度栏 并在完成后折叠它 UPDATE
  • javascript 字符串比较

    我有以下脚本 document write 12 lt 2 返回 true 有什么理由吗 文档说 javascript 以数字方式比较字符串 但是 我不明白 12 如何小于 2 JavaScript 逐个字符地比较字符串 直到其中一个字符不
  • 将日期从 Excel 转换为 R

    我很难将日期从 excel 从 csv 读取 转换为 R 非常感谢帮助 这是我正在做的事情 df date as Date df excel date format d m Y 但是 有些日期会被转换 但有些则不会 这是以下的输出 head
  • ggpairs 绘图,其中包含具有重要性星级和自定义主题的相关值热图

    我想用 ggPairs 创建一个相关图 其中应该包含 相关值的热图 就像在这个SO问题中一样 相关性的显着性星号 就像在这个SO问题中一样 根据自定义主题的字体类型和字体大小 基于 user20650对上述SO问题提供的优秀解决方案 我成功
  • Angular2:将表单上下文绑定到 ngTemplateOutlet

    我试图定义一个包含动态表单 使用 ReactiveForms 的组件 用户应该能够在其中添加 删除控件 控件可以采用多种形式 并且必须在组件外部定义 因此我认为 TemplateRef 最适合这种情况 我正在努力寻找一种通过使用 formC
  • XSL 与区域化/国际化数字格式

    在格式化数字时 XSL 中是否内置了任何区域化支持 目前 我的底层 XML 包含英国 美国格式的数字 例如 54321 12345 我可以对此进行选择总和 以相同的格式给出总计 我可以使用 format number 54321 12345
  • Lattice中的facet_wrap相当于什么

    假设我们有一些这样的数据 dta lt data frame group rep letters 1 8 each 1000 x runif 8000 y runif 8000 我想为每个组生成一个包含 y x 的格子图 但是 第一行有 a
  • 左外连接等效

    我有一个包含空值的表 在 ORDER 表中 PART ID 部分有 2 个空值 CUSTOMER ID 部分有 2 个空值 我有这样的疑问 SELECT O ORDER ID O ORDER DATE O CUST ID O QUANTIT
  • 将图形直接放入 Knit 文档中(不将其文件保存在文件夹中)

    我正在 RStudio 中创建一个名为 test Rnw 的文档 其 MWE 如下 documentclass 12pt english nohyper tufte handout usepackage tabularx usepackag
  • 逗号运算符的正确用法是什么?

    我看到了这段代码 if cond perror an error occurred exit 1 为什么要这么做 为什么不只是 if cond perror an error occurred exit 1 在你的例子中 它根本没有任何理由
  • Coq 将不存在的语句转换为 forall 语句

    我是 Coq 的新手 这是我的问题 我有一个声明说 H forall x term exists y term P x y P y x 我猜它相当于 forall x y term P x y P y x gt false 但我可以使用哪种
  • 浮点数转换恐怖,有出路吗?

    背景 最近 我的同事向我们的测试项目添加了一些新测试 其中之一还没有传递或持续集成系统 由于我们有大约 800 个测试 并且需要一个小时才能运行所有测试 因此我们经常会犯错误 并且只在我们的开发机器上运行我们当前已实现的测试 这种方法有其弱
  • 如何从不返回简单 HTML 的网站抓取数据

    我一直在使用 requests 和 BeautifulSoup for python 从基本网站中抓取 html 但大多数现代网站不仅仅提供 html 结果 我相信他们运行 javascript 或其他东西 我不是很熟悉 这里有点菜鸟 我想
  • spring boot hibernate查询无效用户错误

    嗨 我是 Spring Boot 的新手 我尝试连接到 Oracle 并列出相关记录 我的代码在存根环境中运行 即没有连接到数据库 当我尝试从 Spring 连接到数据库时 出现编辑 2 中给出的错误 家庭控制器 package blog
  • 转换数据类型为 Option Strict

    我只是想知道如何正确 将字符串转换为日期 将整数转换为短整型 将字符串转换为整数 将字符串转换为双精度 正确地不使用任何类型 我打开了 Option Strict 现在所有这些错误都弹出了 所以我正在尝试修复它们 NET 提供了多种检查 测