1

我使用VB.NET,上方是为什么不编译编译错误?

Option Explicit 

然而,为什么编译器不会提高,当我做了一个错误: -

obj.ThisFunction(Convert.ToInt32(strMessage)) 

而且功能: -

Function ThisFunction(id as long) 

当然,Int32是int并且int64很长?在VS 2013中是否有编译器选项,我可以打开以查看这些选项?

+0

VB.NET编译器自动将Int32转换为long。 –

+0

如果您想要发现类型错误,请使用'OPTION STRICT ON'。但隐式整数到长转换仍然是允许的。 – sloth

+0

是的,strMessage中的值现在可以非常长,并且Convert.ToInt32会导致运行时错误。这将是一个噩梦,通过所有的代码寻找和扩大每个ToInt32。如果我可以通过错误列表轻松完成,那会很好。严格的也是:( – MiscellaneousUser

回答

4

这不是编译错误。如果你已经明确地写了strMessage转换为Int32,那么编译器会假定你知道你在这里做什么。

为了检验这其实是一个Int32可以使用Int32.TryParse

转换的Int32Int64不是编译错误甚至Option Strict On,因为这是一个扩大转换(选项严格上给出了一个汇编当它发现隐含缩小转换等)