pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

可空布爾值上的 GetType

GetType on Nullable Boolean(可空布爾值上的 GetType)
本文介紹了可空布爾值上的 GetType的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

當我在 Microsoft MSDN 上發現這篇文章時,我正在研究可空布爾值

I was looking into nullable bools when I found this article on Microsoft MSDN

如何:識別可空類型(C# 編程指南)

您可以使用 C# typeof 運算符來創建表示 Nullable 類型的 Type 對象.

You can use the C# typeof operator to create a Type object that represents a Nullable type.

所以我嘗試使用可為空的布爾值進行檢查:

So I tried checking with a nullable bool:

Console.Write(typeof(bool?)); //System.Nullable`1[System.Boolean]

MSDN上的文章說

您還可以使用 System.Reflection 命名空間的類和方法來生成表示 Nullable 類型的 Type 對象.但是,如果您嘗試在運行時使用 GetType 方法或 is 運算符從 Nullable 變量獲取類型信息,則結果是表示底層類型的 Type 對象,而不是 Nullable 類型本身.

You can also use the classes and methods of the System.Reflection namespace to generate Type objects that represent Nullable types. However, if you try to obtain type information from Nullable variables at runtime by using the GetType method or the is operator, the result is a Type object that represents the underlying type, not the Nullable type itself.

在 Nullable 類型上調用 GetType 會導致在類型隱式轉換為 Object 時執行裝箱操作.因此 GetType 總是返回一個代表底層類型的 Type 對象,而不是 Nullable 類型.

Calling GetType on a Nullable type causes a boxing operation to be performed when the type is implicitly converted to Object. Therefore GetType always returns a Type object that represents the underlying type, not the Nullable type.

如果這是真的,我希望從 .GetType() 獲得相同的結果,無論我使用可空 bool 還是常規 bool.但事實并非如此:

If this is true I expect to get the same result from .GetType() whether I use a nullable bool or a regular bool. But this is not what happens:

    bool a = new bool();
    Console.Write(a.GetType()); //Prints System.Boolean

    bool? b = new bool?();
    Console.Write(b.GetType()); //Exception!

發生的異常:

BoolTest.exe 中發生類型為System.NullReferenceException"的未處理異常

An unhandled exception of type 'System.NullReferenceException' occurred in BoolTest.exe

附加信息:未將對象引用設置為對象的實例.

Additional information: Object reference not set to an instance of an object.

但是對象引用被設置為一個對象的實例.導致此錯誤的原因可能是什么?

But the object reference is set to an instance of an object. What could be the cause of this error?

推薦答案

您正在對 NULL 引用調用 GetType(使用 No值).

You're calling GetType on a NULL Reference (The result of boxing a Nullable Type with No Value).

布爾值?b = new bool?(); 等價于 bool?b = null;

試試這個以獲得正確的結果:

Try this to get the correct result:

bool? b = new bool?(false);
Console.Write(b.GetType()); // System.Boolean

文檔意味著,如果您在具有值(非空)的 Nullable 對象上成功調用 GetType().你得到的底層類型是 System.Boolean.但是您不能使用 NULL 引用調用任何方法,這是適用于任何引用類型的一般規則.

The documentation means that if you call GetType() successfully on a Nullable object that has value (Not Null). You get the Underlying type which is System.Boolean. But you can't call any method using a NULL reference and this is a general rule that applying to any reference type.

要清除 = nullnew bool?() 之間的等價點,請檢查此 小提琴.兩者都生成相同的 IL:

To clear the equivalence point between = null and new bool?(), check this Fiddle. Both generates the same IL:

IL_0001:  ldloca.s   V_0
IL_0003:  initobj    valuetype [mscorlib]System.Nullable`1<bool>

IL_0009:  ldloca.s   V_1
IL_000b:  initobj    valuetype [mscorlib]System.Nullable`1<bool>

這篇關于可空布爾值上的 GetType的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Why shouldn#39;t I always use nullable types in C#(為什么我不應該總是在 C# 中使用可空類型)
C# HasValue vs !=null(C# HasValue vs !=null)
C# ADO.NET: nulls and DbNull -- is there more efficient syntax?(C# ADO.NET:空值和 DbNull —— 有沒有更高效的語法?)
How to set null value to int in c#?(如何在c#中將空值設置為int?)
How to handle nulls in LINQ when using Min or Max?(使用 Min 或 Max 時如何處理 LINQ 中的空值?)
Method call if not null in C#(在 C# 中如果不為 null 的方法調用)
主站蜘蛛池模板: 电子厂招聘_工厂招聘_普工招聘_小时工招聘信息平台-众立方招工网 | 阳光1号桔柚_无核沃柑_柑橘新品种枝条苗木批发 - 苧金网 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 全自动不干胶贴标机_套标机-上海今昂贴标机生产厂家 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 塑料薄膜_PP薄膜_聚乙烯薄膜-常州市鑫美新材料包装厂 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 苏州注册公司_苏州代理记账_苏州工商注册_苏州代办公司-恒佳财税 | 出国劳务公司_正规派遣公司[严海] | 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 | 天津仓库出租网-天津电商仓库-天津云仓一件代发-【博程云仓】 | 集菌仪_智能集菌仪_全封闭集菌仪_无菌检查集菌仪厂家-那艾 | 非小号行情 - 专业的区块链、数字藏品行情APP、金色财经官网 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 精密冲床,高速冲床等冲压设备生产商-常州晋志德压力机厂 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 低温柔性试验仪-土工布淤堵-沥青车辙试验仪-莱博特(天津)试验机有限公司 | 挖掘机挖斗和铲斗生产厂家选择徐州崛起机械制造有限公司 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 菏泽知彼网络科技有限公司 | 课件导航网_ppt课件_课件模板_课件下载_最新课件资源分享发布平台 | 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 餐饮加盟网_特色餐饮加盟店_餐饮连锁店加盟 | 汽车润滑油厂家-机油/润滑油代理-高性能机油-领驰慧润滑科技(河北)有限公司 | 台式恒温摇床价格_大容量恒温摇床厂家-上海量壹科学仪器有限公司 | 翰香原枣子坊加盟费多少钱-正宗枣核糕配方培训利润高飘香 |