C# 有没有可能得到一个;使用未初始化的局部变量;Visual Basic中的警告?

C# 有没有可能得到一个;使用未初始化的局部变量;Visual Basic中的警告?,c#,vb.net,warnings,variable-declaration,C#,Vb.net,Warnings,Variable Declaration,比较以下代码段: static void Main(string[] args) { int i; Console.Write(i); // yields an error: Use of unassigned local variable 'i' } Public Sub-Main() 作为整数的Dim i 控制台。写入(i)“无警告” 端接头 Public Sub-Main() 像线一样变暗 Console.Write(s)“生成警告:变量“s”在赋值之前使用。运行时可能

比较以下代码段:

static void Main(string[] args)
{
    int i;
    Console.Write(i); // yields an error: Use of unassigned local variable 'i'
}
Public Sub-Main()
作为整数的Dim i
控制台。写入(i)“无警告”
端接头
Public Sub-Main()
像线一样变暗
Console.Write(s)“生成警告:变量“s”在赋值之前使用。运行时可能会导致空引用异常。
端接头
我喜欢上一个示例中显示的警告,也希望在第二个示例(值类型)中显示它(尽管在这种情况下,第一个示例中的文本比第三个示例中的文本更合适)。这是可能的,还是这是VB.NET中(故意)省略的功能?

不,这是不可能的

以下是微软在2010年年底对它的评论:

当您没有使用本地语言时收到警告确实很有价值,我们希望将此警告添加到Visual Basic中。但是,考虑到启用“警告为错误”的运行人数,在引入新警告时必须小心。虽然此警告通常表示编码错误,但在现有应用程序中可能存在未使用的本地文件是良性的实例,这是以前版本的方法遗留下来的。在这些情况下,当现有的代码库从一个语言版本移动到下一个版本时,我们需要非常小心,不要破坏它们


因此,由于向后兼容的原因,他们似乎不会添加此功能。

启用Option Strict…但字符串没有新的构造函数,因此它可能不在乎。当你去掉类型…?第二个也是安全的,因为编译器看到int的默认值为零。@436f6465786572:你怎么敢说我没有默认的严格选项…;-)无论哪种方式,它都应该是可复制的:)这是可能的,我可以在VS2010@436f6465786572真正地你能用截图证明吗?@436f6465786572你在代码中使用的是引用类型,而不是值类型,所以不能。