VB.NET弱类型?强类型?
我以前用过C。然而,在我加入一家新公司后,我需要编写vb.net。然而我发现写起来很难。因为我发现vb.net不是强类型的。它真的不是强类型的吗?或者有什么设置?这里有一些例子VB.NET弱类型?强类型?,vb.net,Vb.net,我以前用过C。然而,在我加入一家新公司后,我需要编写vb.net。然而我发现写起来很难。因为我发现vb.net不是强类型的。它真的不是强类型的吗?或者有什么设置?这里有一些例子 If (Me.Check1() And Me.Check2()) Then 据我所知,一旦Me.Check1()返回false,Me.Check2()将不会执行。但是我错了和用于按位操作。对于布尔运算,我应该使用和。应该如此 If (Me.Check1() AndAlso Me.Check2()) Then 问题是如
If (Me.Check1() And Me.Check2()) Then
据我所知,一旦Me.Check1()
返回false,Me.Check2()
将不会执行。但是我错了<代码>和用于按位操作。对于布尔运算,我应该使用和。应该如此
If (Me.Check1() AndAlso Me.Check2()) Then
问题是如果(Me.Check1()和Me.Check2()),那么仍然有效并且没有编译错误。我真的很想知道我是否能够检查这种“不适当”的操作
和
和以及和
只是其中一种情况
有时,我需要进行忽略案例字符串比较。然而,每个人都会犯错误。有时候,我会
If (String.Compare(Me.string1, Me.string2, True)) Then
我想每个人都知道这个问题。应该是
If (String.Compare(Me.string1, Me.string2, True) = 0) Then
但是,在编译过程中,我仍然无法检查这种情况
我喜欢C#,因为它帮助我们在编译过程中发现许多问题。然而,VB.NET使我非常困惑,许多错误必须在运行时和测试期间确定
另一个例子是
Public Sub MySub(ByVal obj as Object)
Console.WriteLine(obj.MyProperty)
End Sub
在vb.net中,这种语句仍然有效。为什么?为什么?为什么?有人知道如何像C#一样使用vb.net吗?vb.net既有强类型模式,也有弱类型模式。它通过“严格”选项进行控制。这可以在项目或源文件级别设置
' Enable VB.Net strong typing
Option Strict On
' Enable VB.Net weak / dynamic typing
Option Strict Off
我最近在一个旧的vb.net项目上点击了Option Strict按钮,花了几个小时修复类型错误,但这是值得的。请务必非常小心地处理DateTime到字符串以及字符串到DateTime的转换。我在textbox的末尾添加了几个“12:00:00am”的实例,这会导致旧代码库出现问题
一旦错误被清除,您就可以打开optioninfer,这样Dim将像c#的var一样工作,并且您不必显式地键入所有Linq查询
(我本想对此发表评论,但我似乎需要更多的观点,对不起)您的示例中没有一个真正说明打字的不足。可能是动态输入。我知道这是旧的,但我认为这条评论是相关的。OP对布尔运算符和位运算符存在误解。在这方面,VB的工作方式与C完全相同。在C#中,短路布尔运算有&
运算符,非短路布尔运算和按位运算有&
运算符。它们100%类似于VB中的和以及和。C语言中的|
和|
以及VB中的OrElse和或也是如此。哇。。。非常感谢你!!!一旦我打开它,超过1000个编译错误。哈哈哈~真的很感谢!!!还有一个问题,你知道如何制作强类型的IIf
?在C#中,?:
操作符是强类型的。如果您使用的是Visual Studio 2008,请使用If
而不是IIf
iirc,您还可以在项目级别设置选项Strict On,以便所有代码文件都具有强类型。转到项目属性的“编译”页,并在那里设置Option Strict。@JaredPar:错误。VB.NET的IIf
优于VB6。在VB6中,IIf
函数的true和false部分都被计算,而不管条件是true还是false。在VB.NET中,先计算条件,然后根据结果执行true语句或false语句。这相当于C#的条件?truePart:falsePart
。除非您希望我们也避免使用C#的三元运算符,否则我认为没有理由不使用VB.NET的IIf
。