加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

运行时类型的默认值

发布时间:2022-12-16 15:04:52 所属栏目:MsSql教程 来源:网络
导读: 运行时类型的默认值
...更像是 Nullable 类型是通用 ValueType,其默认值是 Nullable 的实例,其 Value 属性设置为类型 T 的默认值,其 HasValue 属性设置为 false。我的观点是,可为空的类

运行时类型的默认值

...更像是 Nullable 类型是通用 ValueType,其默认值是 Nullable 的实例,其 Value 属性设置为类型 T 的默认值,其 HasValue 属性设置为 false。我的观点是,可为空的类型永远不会为空,这只是编译器的魔法,可以让您在编写代码时更容易使用可为空的类型。你写的:object a = myNullable;编译器看到的:object a = myNullable.HasValue ? myNullable.Value : null;. 因此,从技术上讲,Nullables的默认值确实具有其“底层”(通用)类型的默认值——但它没有公开。

在这种情况下,这与只有一个“返回”无关,它会使代码变得混乱。真的只是删除“其他”这个词,因为在 if you return.. if(....)return Activator.CreateInstance(t); 返回空值;

如果我想简洁,我会使用三元运算符——它看起来并不凌乱。包括 else 意味着代码更容易快速掌握。删除它并仅使用“return null;” 引入隐式。

返回(t.IsValueType && Nullable.GetUnderlyingType(t)== null)?激活器.CreateInstance(t) : null; 如果你不喜欢它挂在那里!

是为了什么Nullable.GetUnderlyingType(t) == null?在什么情况下它可以不为空?

我发布了相同的解决方案,但不确定如何处理可空值。事实证明,可空值属于第一个分支,但 Activator.CreateInstance(typeof(int?)) 实际上返回 nullmssql 空值,因此一切正常。

有关信息(并且因为我遇到了问题),System.Void 被视为 ValueType,但会导致 CreateInstance 出现异常。如果您使用此代码获取方法的默认返回值,则需要考虑 System.Void !

“默认值”是什么意思?根据此表,所有引用类型(“类”)都将 null 作为默认值,而所有值类型都将具有其默认值。

相当复杂。有关更简洁的方法,请参阅 codeka 的解决方案。

我想这取决于你对复杂的定义。如果总共有两个类和三个指令的 24 行代码是“复杂的”,那么我想你是对的......Codeka 的示例也有三个指令,所以我只能假设它是“额外的”上课,然后?

那个“其他”让我发疯:)

你能解释为什么它不起作用吗?得到一个错误?它只是不返回您所期望的吗?

更多文章在 Laravel 中有没有办法向请求数组添加值?使用 Unity 解析 IEnumerable从 ADB 和 Android SDK 获取 Android 设备标识符为什么我不能像在方法上那样在类变量上使用虚拟/覆盖?ScrollView 中的 ListView 在 Android 上不滚动Asp.net 回发后动态添加用户控件保存值阻止对 asp.net .asmx web 服务的跨域调用

(编辑:拼字网 - 核心网)

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