加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么这段代码不会抛出异常?

发布时间:2020-12-15 04:03:26 所属栏目:百科 来源:网络整理
导读:我期望以下几行代码抛出一个异常,因为我正在访问一个可归零变量的Value属性,该变量被赋值为null.但是,当我执行以下操作时,我没有任何异常: int? x=null;Console.WriteLine(x.Value==null); 但当我这样做时: Console.WriteLine(x.Value); 我确实得到了一个
我期望以下几行代码抛出一个异常,因为我正在访问一个可归零变量的Value属性,该变量被赋值为null.但是,当我执行以下操作时,我没有任何异常:
int? x=null;
Console.WriteLine(x.Value==null);

但当我这样做时:

Console.WriteLine(x.Value);

我确实得到了一个例外,正如可以预料的那样.

但是访问x.Value的两种方式有什么区别?为什么我在第一种情况下没有例外?毕竟两段代码都试图访问x.Value属性.

注意:我在www.compileonline.com网站上运行上面的代码,顺便说一句.不确定尝试使用Visual Studio编译器会产生不同的结果,但我目前无法访问Visual Studio.

TIA.

解决方法

使用 website compile online指出时,单声道编译会对代码进行重写/优化:
using System.IO;
using System;

class Program
{
    static void Main()
    {
        int? x=null;
        Console.WriteLine(x.Value==null);  //-> Console.WriteLine(false);    
    }
}

Compiling the source code….

$mcs main.cs -out:demo.exe 2>&1

main.cs(9,38): warning CS0472: The result of comparing value type int' with null isfalse’

Compilation succeeded – 1 warning(s)

Executing the program….

$mono demo.exe

False

警告CS0472告诉您,这是他们正在使用的在线/单声道编译器中的错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读