我不知道为什么我会收到这个错误,但是这个代码不应该编译,因为我已经检查了队列是否被初始化了?
public static void Main(String[] args)
{
Byte maxSize;
Queue queue;
if(args.Length != 0)
{
if(Byte.TryParse(args[0], out maxSize))
queue = new Queue(){MaxSize = maxSize};
else
Environment.Exit(0);
}
else
{
Environment.Exit(0);
}
for(Byte j = 0; j < queue.MaxSize; j++)
queue.Insert(j);
for(Byte j = 0; j < queue.MaxSize; j++)
Console.WriteLine(queue.Remove());
}
Run Code Online (Sandbox Code Playgroud)
所以如果没有初始化队列,那么for循环是不可以访问的吗?由于程序已经以Environment.Exit(0)终止?
希望你能给我一些指示:)
谢谢.
工作中的这个项目在某些方法中有这个代码:
Dim pDataTable As DataTable
Dim pDS As DataSet
pDS = someClass.GetSomeDataSet()
If (pDS.Tables.Count > 0) Then
pDataTable = pDS.Tables("SomeTableName")
foo(pDataTable)
EndIf
If (pDataTable IsNot Nothing) Then
pDataTable.Dispose()
EndIf
pDataTable = Nothing
Run Code Online (Sandbox Code Playgroud)
只是好奇,但为什么会If (pDataTable IsNot Nothing) Then引起这个警告:
变量'pDataTable'在赋值之前使用.在运行时可能会导致空引用异常.
我完全理解它告诉我的是什么.如果我只是调用pDataTable.Dispose()它并且它从未在第一个if块中实例化,那么我的应用程序将会爆炸.但是为什么它会产生一个警告,只是简单地将值与null进行比较?
如果我想摆脱这个警告,我应该只是更改声明pDataTable还要创建一个新实例DataTable吗?