c# - 可以赋值null吗?

标签 c# .net reflection .net-2.0

<分区>

Possible Duplicates:
How to check if an object is nullable?
Determine if reflected property can be assigned null

如何正确识别给定类型的变量(或类成员)是否可以采用 null ?更具体如何处理Nullable<T>因为它不是引用类型?或者任何其他可能定义了一些奇怪的隐式转换的类型。 我的直觉是唯一确定的方法是 try{} catch{}看看它会不会爆炸……但也许它有一些技巧。

最佳答案

不清楚您掌握了哪些关于所讨论类型的信息。

try/catch 将在执行 时执行操作,这并不是您真正想要的。

对于具体的类型,只要知道变量类型就应该能知道。它应该非常明显 - 或者如果不是,那么你遇到的问题比不知道 nullity 更严重 :)

对于通用类型,我发现这非常有用:

if (default(T) == null)

对于 Type 引用(例如,如果您正在使用反射),您可以使用:

if (!type.IsValueType || Nullable.GetUnderlyingType(type) != null)

关于c# - 可以赋值null吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5262248/

相关文章:

c# - 将多个多页 tiff 图像合并为单个 tiff C#

c# - 从 WCF 中的 web.config 获取 Sitecore "Site"数据

c# - 如何让 J# 与 VS 2010 和 .NET 4 一起工作

c# - 旧版 API 需要将回调名称作为字符串传递。我可以通过扩展方法改进该 API 吗?

java - 一个方法可以在Java中使用反射找出自己的名字吗

java - getClass() 返回 java.lang.Class [反射(reflection)]

c# - LINQ 一次更新多个元素

c# - System.Windows.Automation非常慢

c# - ObservableCollection 的排序值(响应式扩展)

c# - 我可以使用 Reporting Services 从标准的多表 Excel 模板生成 Excel 报告吗?