![]() |
1
97
这是我使用的代码:
|
![]() |
2
14
我在我的实用程序库中编写了一些我非常依赖的方法。第一种方法是将任何类型转换为其相应的可为空的<类型>形式:
第二个方法只是报告给定类型是否可以为空。此方法由第一个调用,单独使用:
上面的IstypeNullable实现每次都像一个champ一样工作,但是在最后一行代码中它有点冗长和缓慢。下面的代码体与上面的IstypeNullable相同,只是最后一行代码更简单、更快:
享受! 作记号 P.S.-关于“空性” 我应该在另一篇文章中重复一个关于空性的声明,它直接适用于正确地解决这个主题。也就是说,我认为这里讨论的重点不应该是如何检查一个对象是否是通用的可以为空的类型,而应该是是否可以为其类型的对象分配一个值为空。换句话说,我认为我们应该确定一个对象类型是否可以为空,而不是它是否可以为空。区别在于语义,即确定空性的实际原因,这通常是最重要的。 在使用类型可能在运行时未知的对象(Web服务、远程调用、数据库、源等)的系统中,常见的要求是确定是否可以为该对象分配空值,或者该对象是否包含空值。在不可为空的类型上执行此类操作可能会产生错误,通常是异常,这在性能和编码要求方面都非常昂贵。为了采取主动避免此类问题的高度首选方法,有必要确定任意类型的对象是否能够包含空值,即它是否通常是“可空”的。 在非常实际和典型的意义上,.NET术语中的可空性并不一定意味着对象的类型是可空的形式。实际上,在许多情况下,对象都有引用类型,可以包含空值,因此都可以为空;这些对象都没有可以为空的类型。因此,为了在大多数场景中实现实际目的,应该对可空性的一般概念(而不是与实现相关的可空性概念)进行测试。因此,我们不应该仅仅关注.NET可空类型,而应该在关注可空性的一般、实用概念的过程中,将我们对它的需求和行为的理解结合起来。 |
![]() |
3
9
莱曼的回答很好,帮助了我,但是,还有一个问题需要解决。
在下面你会发现一个
(很抱歉,我不能简单地在莱曼的回答上发表评论,因为我是新来的,还没有足够的发言权。) |
![]() |
4
2
我所知道的没有任何东西
编辑:
正如评论所暗示的那样
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 5 月前 |
|
pseudodev · 失败的测试仅显示堆栈跟踪,不显示完整日志 6 月前 |
![]() |
CactusCake · if语句中应有分号 7 月前 |
![]() |
Bin4ry · 子文件夹中的应用程序设置 7 月前 |