c# – 我应该使用默认值(Foo),Foo.Empty还是null?
发布时间:2020-12-15 19:47:48 所属栏目:百科 来源:网络整理
导读:所以C#现在允许你使用默认(Foo)来获得一个已识别的“未填充”/空类的实例 – 我不确定它是否与新的Foo()完全相同.许多库类还实现了一个Foo.Empty属性,该属性返回一个类似的实例.当然,任何引用类型都可以指向null.那真的,有什么区别?什么时候是对还是错?什
所以C#现在允许你使用默认(Foo)来获得一个已识别的“未填充”/空类的实例 – 我不确定它是否与新的Foo()完全相同.许多库类还实现了一个Foo.Empty属性,该属性返回一个类似的实例.当然,任何引用类型都可以指向null.那真的,有什么区别?什么时候是对还是错?什么更一致,或表现更好?在检查对象在概念上是否“未准备好黄金时间”时,我应该使用哪些测试?不是每个人都有Foo.IsNullOrEmpty().
解决方法
当Foo是类类型时,default(Foo)将返回null,其中Foo是值类型(例如int),并且Foo的实例将所有字段初始化为其各自的default()值,其中Foo是结构.它被添加到语言中,以便泛型可以支持值和引用类型 – 更多
info at MSDN
在SomeClass< T>的上下文中测试T时使用默认值(Foo)或MyMethod< T>并且您不知道T是值类型,类类型还是结构. 否则,null应表示“未知”,而空应表示“我知道这是空的”.如果你真的需要一个空的 – 但是非null – 你的类的实例,请使用Foo.Empty模式;例如String.Empty作为“”的替代,如果你需要将一些变量初始化为空字符串. 如果您知道自己正在使用引用类型(类),则使用null,不涉及泛型,并且您明确地测试未初始化的引用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |