相关疑难解决方法(0)

C#错误:使用未分配的局部变量

我不知道为什么我会收到这个错误,但是这个代码不应该编译,因为我已经检查了队列是否被初始化了?

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)终止?

希望你能给我一些指示:)

谢谢.

c# initialization

28
推荐指数
3
解决办法
11万
查看次数

为什么检查对象是否为null会在编译时导致警告?

工作中的这个项目在某些方法中有这个代码:

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吗?

.net vb.net

1
推荐指数
1
解决办法
89
查看次数

标签 统计

.net ×1

c# ×1

initialization ×1

vb.net ×1