问题标签 [option-strict]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2337 浏览

.net - 为什么编译器认为这是一个 Object 而不是 DataRow?

我正在使用 LINQ 查询将DataTable对象内的数据转换为简单IEnumerable的自定义 POCO 对象。

我的 LINQ 查询是:

但是,编译器会在以下消息中抛出警告dr As DataRow消息:

Option Strict On 不允许从“Object”到“System.Data.DataRow”的隐式转换。

为什么我会收到此错误,我需要做些什么来修复它?我原以为dtMessages.Rows返回了 type 的集合DataRow。这不正确吗?

0 投票
2 回答
1853 浏览

vb.net - VB.NET:哪个 As 子句与 Option Strict On 的匿名类型一起使用?

考虑始终声明的要求Option Strict On。我们总是需要用As关键字声明变量。匿名类型的类型是什么?

例子 :Dim product As ... = New With { Key .Name = "paperclips", .Price = 1.29 }

接下来会是As什么?

0 投票
1 回答
7499 浏览

vb.net - 如何在 Option Strict ON 的 VB.NET 项目中使用 System.Linq 扩展方法

我正在使用 .NET 3.5 在我的 DataLayer 类中,我引用了 System.Core、System.Data.Linq、System.Data.DataSetExtensions。但是如果我有Option Strict ON ,我不能在 Linq 查询中使用这个功能:

它将产生以下错误:

“Where”子句是 System.Linq.Queryable 的成员

公共共享函数 Where(Of TSource)(ByVal source As System.Linq.IQueryable(Of TSource), ByVal predicate As System.Linq.Expressions.Expression(Of System.Func(Of TSource, Boolean))) As System.Linq。 IQueryable(TSource)

而“DefaultIfEmpty”是 System.Linq.Queryable 的成员

公共共享函数 DefaultIfEmpty(Of TSource)(ByVal source As System.Linq.IQueryable(Of TSource)) As System.Linq.IQueryable(Of TSource)

如果我将Option Strict OFF设​​置为没有问题

如何在 Option Strict ON 的 VB.NET 项目中使用这些 System.Linq 扩展方法?谢谢

0 投票
4 回答
2123 浏览

vb.net - VB.NET 中的默认选项 Strict

每当我创建一个新的 VB.NET 程序时,我必须进入项目的属性并设置“选项严格”。我可以这样做一次,以便每次创建新项目时都默认设置吗?

0 投票
1 回答
525 浏览

vb.net - 如何使用带有 Option Strict On 的引用类型的 Thread.VolatileWrite?

将参数包装在 CObj 或 DirectCast 中会关闭编译器,但仍不会写入值。

0 投票
2 回答
1369 浏览

vb.net - 如何使用 Option Strict On 和 Late Binding

我试图在切换 Option Strict On 后编译一些代码。但是,我在 VB6 中使用了一些 Interop 并传入了一个表单对象 ByRef,因此 Form.Caption 失败,我无法将其转换为 Form 类型,因为 VB.NET Form 没有标题属性。

如何使用 Option Strict ON 编译以下内容:

有没有办法为特定方法关闭选项严格?

0 投票
1 回答
579 浏览

vb.net - VB.NET 看不到某些类

我的一门课似乎对我的项目的其余部分是不可见的。我想知道是否必须以某种方式初始化它,然后才能使用它的公共内容。

的函数和方法Class1立即出现在 IntelliSense 中,但Class2被视为一般(未知)对象。

我在和中有一些Public Shared功能。我可以使用调用函数Class1Class2

一般。但是,当我使用 中的任何功能尝试此操作时Class2,我收到错误消息:

即使它们的类型当然是声明的。Class1如果我从to复制并粘贴一个工作函数Class2并尝试调用它,它会开始给出相同的错误。我在其中声明的任何测试函数Class2都无法识别其类型,因此被指控试图进行后期绑定。

这两个类都是公共的,并且提到的所有功能都是Public Shared. 我不明白是什么让课程的工作方式不同。好像我需要Class2在 VB 知道它的函数类型之前加载或编译,但这些东西在 VB 中应该是自动的。

这可能是什么原因?

当我开始键入Class2.时,IntelliSense 列表是一个函数,而Class1被识别为一个类。

编辑:如果我将确切的内容复制Class2到新类中,只需将行更改Public Class ...为新名称,一切都会正常工作。我想可能是名字太长了,所以我把这个类复制到了AnotherClassWithAReallyLongName,但是这个也有用。
但是,如果我删除class2,然后重新添加并粘贴其内容,它仍然无法正常工作。

0 投票
1 回答
251 浏览

c# - 如何使用 Option Strict On 设置 DataGridViewCell.Value

如何使用 Option Strict On 测试 DataGridViewCell.Value?

给出错误:

编辑:

解决方案是:

0 投票
1 回答
382 浏览

vb.net - 使用LINQ将父键与二维字典的子键切换

我不确定确切的术语,但我尝试使用 LINQ 做的是用它的孩子的键“切换”字典的键。

这是我作为输入得到的集合:

这是我想要作为输出的集合:

我已经在 VB.net 中创建了代码:

我问这个问题的原因是纯粹的教育,我曾尝试使用 LINQ 将其转换为正确的列表,但如果不创建非常复杂且冗长的 LINQ 语句,我将一事无成。

0 投票
1 回答
146 浏览

vb.net - 打开 Option Strict - 陷阱?

我正在我新继承的 VB.NET 应用程序中的所有项目上打开 Option Strict。我主要是添加很多 CStr、CBool​​、CType 语句来消除所有编译错误。

变成

等等

我几乎每次都用手做一个错误,并且有一个测试应用程序来测试Nothing,...bordercases。

但是有没有可能我遗漏了一些会在运行时产生异常的东西?由于 Option Strict 会生成什么样的代码?只是要添加一些转换,还是 OptionStrict 还会做其他事情?