gpt4 book ai didi

.net - 不应该使用 FieldInfo.SetValue 将 ValueType 设置为 null 失败吗?

转载 作者:行者123 更新时间:2023-12-04 15:27:39 26 4
gpt4 key购买 nike

(与 PropertyInfo SetValue and nulls 相关)

如果我有 public class Thing { public int X; } , 一个 Thing o , 和 FieldInfo fi指向 X字段,为什么调用 fi.SetValue(o, null) 是合法的?运行时设置字段 X为零,即 default(int)而不是提示 ValueType不能设置为 null .

有谁知道这种行为背后的设计选择,至少从 C# 来看,这违反了我最不惊讶的原则?

最佳答案

ArgumentException 的异常(exception)框中包含的文本表明传入的值需要进行转换,这可以解释为什么它会成功。

The value parameter cannot be converted and stored in the field.


我确实同意这似乎有点奇怪,特别是因为我通常认为反射 API 是更严格和更不宽容的 API 之一。
您可以尝试联系 Eric Lippert ,虽然这是一个 BCL/CLR 问题而不是 C#,但他有可能知道答案或知道有人知道。要么,要么能够给出一个很好的猜测。

关于.net - 不应该使用 FieldInfo.SetValue 将 ValueType 设置为 null 失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com