相关疑难解决方法(0)

为什么局部变量需要初始化,但字段不需要?

如果我在我的类中创建一个bool,就像它一样bool check,它默认为false.

当我在我的方法中创建相同的bool时bool check(而不是在类中),我得到一个错误"使用未分配的局部变量检查".为什么?

c# language-design local-variables

139
推荐指数
4
解决办法
2万
查看次数

Try-Catch-Finally阻止了.NET4.5.1的问题

我有一个简单的try-catch-finally代码块,它在.NET3.5中按预期工作,但在使用.NET4.5.1创建的项目中,相同的代码表现完全不同.基本上,在.NET4.5.1中,如果发生异常而不是我在try-catch-finally块中预期的行为,则"finally"块不会被命中.我试过不同的机器,我的另外两个同事也在尝试,我们都得到了相同的结果.这对我来说很关心,因为我使用finally块来关闭DataReader,某些连接以及诸如此类的东西.

如果在没有调试器的RELEASE模式下抛出异常或运行RELEASE编译的EXE文件时,.NET4.5.1不会触发"finally"块.在调试模式下,两个.NET版本都达到了"finally"块.

同样,下面的代码在.NET3.5 RELEASE模式下没有调试器但在.NET4.5.1中没有表现.我错过了什么吗?有人可以帮忙吗?

class Program
{
    static void Main(string[] args)
    {
        try
        {
            string a = null;
            var x = a.Length;
            Console.WriteLine(x);
        }
        catch (Exception ex)
        {
            throw;
        }
        finally
        {
            Console.WriteLine("This is the finally block.");
        }
        Console.WriteLine("You should not be here if an exception occured!");
    }
}
Run Code Online (Sandbox Code Playgroud)

c# exception

17
推荐指数
2
解决办法
708
查看次数

标签 统计

c# ×2

exception ×1

language-design ×1

local-variables ×1