Vb.net 从net471到.NET标准noob问题

Vb.net 从net471到.NET标准noob问题,vb.net,migration,.net-standard,Vb.net,Migration,.net Standard,我有一个非常老的VB项目,我希望对其进行现代化改造,我创建了一个新的解决方案(稍后将代码转换为C#),正在将库和web项目重新添加到新的解决方案中,以消除旧项目中有旧的.publishproj,对mscorlib 2.0的引用(尽管通过重新添加引用尽了最大努力解决)以及其他一些可能会消失的问题 在这个过程中,我想尝试使用标准化PCL的.NET标准,这将允许将来与Xamarin、Mono等一起使用。我对.NET标准不太熟悉,因此需要一些输入(根据我所读到的2.0的缩放效果尝试2.0) 我遇到的问题

我有一个非常老的VB项目,我希望对其进行现代化改造,我创建了一个新的解决方案(稍后将代码转换为C#),正在将库和web项目重新添加到新的解决方案中,以消除旧项目中有旧的.publishproj,对mscorlib 2.0的引用(尽管通过重新添加引用尽了最大努力解决)以及其他一些可能会消失的问题

在这个过程中,我想尝试使用标准化PCL的.NET标准,这将允许将来与Xamarin、Mono等一起使用。我对.NET标准不太熟悉,因此需要一些输入(根据我所读到的2.0的缩放效果尝试2.0)

我遇到的问题有:

1) 我拥有.NET Framework中的几个基本核心功能,这些功能在.NET标准中不被认可:

IsNumeric,IsNothing,IsDBNull,IIF

关于为什么会这样,有什么建议吗

(重新编辑以删除保留)
感谢jmchilinney的回答:-)

所有这四个
都是数字的
没有
IsDBNull
IIf
都是特定于VB的。如果其他语言不引用Microsoft.VisualBasic程序集就无法访问它们,则它们不能成为.NET标准的一部分。您确实不应该在以前使用它们,因为它们是VB6的遗留版本

IsNumeric
的情况下,它仍然在内部使用
Double.TryParse
。事实上,
Double.TryParse
是专门为改进
IsNumeric
的性能而编写的。如果您想知道
字符串
是否可以转换为相应数字类型,您应该自己使用相应数字类型的
TryParse
方法

如果
IsNothing
,您只需将您的引用与
Nothing
进行比较,例如,而不是:

If IsNothing(myThing) Then
If IsDBNull(myThing) Then 
myVar = IIf(someBooleanExpression, someValue, someOtherValue)
您应该使用:

If myThing Is Nothing then
If myThing Is DBNull.Value Then
对于
IsDBNull
,您应该执行上述操作,例如,而不是:

If IsNothing(myThing) Then
If IsDBNull(myThing) Then 
myVar = IIf(someBooleanExpression, someValue, someOtherValue)
您应该使用:

If myThing Is Nothing then
If myThing Is DBNull.Value Then
也就是说,
DataRow
和数据读取器都有自己的专用方法来告诉您它们的某个字段是否为空

IIf
的例子中,它总是有它的问题,因为在许多情况下,人们试图像对待操作员一样对待它。我认为VB 2008确实引入了一个
If
运算符,它的工作原理与C#triale运算符非常相似,因此从那时起,您应该一直使用它,例如,而不是:

If IsNothing(myThing) Then
If IsDBNull(myThing) Then 
myVar = IIf(someBooleanExpression, someValue, someOtherValue)
您本应使用:

myVar = If(someBooleanExpression, someValue, someOtherValue)

IIf
If
之间有一些细微的区别,但是我会让你来看看
If
是如何为你自己工作的。

每个戳球一个口袋妖怪!每个堆栈溢出问题帖子一个问题!问题2本身就离题了。