社区首页 >问答首页 >为什么类型(Foo)会返回null?

为什么类型(Foo)会返回null?
EN

Stack Overflow用户
提问于 2011-01-20 02:18:17
回答 5查看 2.5K关注 0票数 25

有时,我看到typeof(Foo)返回null。为什么会发生这种事?

这是在C#,.NET 3.5中。

我认为这可能与包含尚未加载的类型的程序集有关,但是一个测试应用程序显示,程序集是在使用typeof的方法开始时加载的。

有什么想法吗?

更新1

  • 我不能提供一个可重复的示例,因为这发生在一个巨大的应用程序上
  • 在我的应用程序中,当我说“偶尔”时,我指的是相同的方法,而是在各种情况下。而且,当它在运行时失败一次时,它每次都会对应用程序的那个实例失败。

更新2

该应用程序使用了大量的内存,并运行在32位XP上。我在想,也许是一个TypeLoadException或OutOfMemoryException被吞没了(但我不知道是怎么做的,因为我在调试器中打开了一次机会异常)。

更新3

刚才也碰到了同样的问题。下面是堆栈跟踪:

到目前为止,代码实际上只是:

代码语言:javascript
代码运行次数:0
复制
Type tradeType = typeof(MyTradeType)
TradeFactory.CreateTrade(tradeType)

(在此之前,是..CreateTrade(typeof(MyTradeType)),所以实际上无法判断是否返回空__)

因此,看起来typeof() 没有返回空,但是当它在 CreateTrade 方法中结束时,被设置为null。

异常(NullReferenceException)的HResult属性为0x80004003 (Invalid pointer)。对System.Runtime.InteropServices.Marshal.GetLastWin32Error( )的调用(在立即窗口中)返回127 (The specified procedure could not be found)。我已经查看了Modules窗口,包含此类型和方法的模块已经加载,并且没有任何加载程序错误。

EN

回答 5

Stack Overflow用户

发布于 2011-01-20 02:31:19

加载dll是否因某种原因而失败?你查过融合日志了吗。

我认为这会导致更多的问题,但如果您在使用程序集中的任何内容之前执行此检查,则可能会隐藏任何进一步的问题。

票数 4
EN

Stack Overflow用户

发布于 2011-01-20 02:26:26

因为typeof(T)是编译时操作符,所以不会涉及程序集的加载时间。

看到一些演示这一点的代码会很有趣。

更有趣的是,它有时发生,有时却不发生。

第一个答案可能是:在实例上使用GetType()

票数 2
EN

Stack Overflow用户

发布于 2011-01-20 02:56:02

类型在编译期间确定类型。因此,即使它返回null,也应该始终返回null。因为在运行时行为不会改变。给一些代码片段,其他一些东西坏了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4745853

复制
相关文章
typeof运算对于null会返回“Object"
您也许会问,为什么 typeof 运算符对于 null 值会返回 "Object"。这实际上是 JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符,从而解释了这一矛盾,但从技术上来说,它仍然是原始值。
阮键
2019/08/07
2.2K0
JavaScript基础:typeof null 为什么返回object
null本身实际上是基本类型,但是Javascript在存储的时候,会将不同的对象在底层存储都使用二进制的方式存储,在Javascript中如果二进制的前三位都为0的话就会被判断为object,null的二进制存储表示形式为全是0,自然前三位也是0,因此执行typeof时会返回”object”。
IT工作者
2022/01/26
3K0
Python 函数为什么会默认返回 None?
Python 有一项默认的做法,很多编程语言都没有——它的所有函数都会有一个返回值,不管你有没有写 return 语句。
Python猫
2020/08/18
2.2K0
解引用NULL为什么会导致程序挂死?
解引用NULL指针为什么会出错,导致程序挂死?或者说访问内存地址为0的位置为什么会视为非法?
编程珠玑
2020/01/14
1K0
解引用NULL为什么会导致程序挂死?
解释函数 foo() {} 和 var foo = function() {} 之间 foo 用法的差异
在 JavaScript 中,我们有不同的方法来定义函数。函数 foo() {} 和 var foo = function() { } 是定义函数的两种不同方法。这两种方式都有其优点和不同的用例;但是,两者在执行函数时给出相同的结果。
很酷的站长
2023/01/08
1.3K0
解释函数 foo() {} 和 var foo = function() {} 之间 foo 用法的差异
File.listFiles()返回null
如果已知ROOT路径存在,root.exists()返回true。且是文件夹。那么原因则是没有获取READ_EXTERNAL_STORAGE权限。
平凡的学生族
2019/05/25
5K0
为什么1000 == 1000返回为False,而100 == 100会返回为True?
这是我们今天要讨论的话题,因为我觉得它非常的有趣。 如果你运行如下代码: Integer a = 1000, b = 1000; System.out.println(a == b);//1 Integer c = 100, d = 100; System.out.println(c == d);//2 你会得到以下运行结果: false true 我们知道,如果两个引用指向同一个对象,那么==就成立;反之,如果两个引用指向的不是同一个对象,那么==就不成立,即便两个引用的内容是一样的。因此,结果
顶级程序员
2018/04/26
1.7K0
NDK学习笔记:线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)
nativeThreadEnvTest打算实现这样一个功能:for循环调用MainActivity.getUuid方法,打印出5串不同的UUID。听上去很简单,逻辑代码如下:
全栈程序员站长
2022/07/30
2.8K0
NDK学习笔记:线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)
Mybatis返回集合类型到底是空集合还是null?源码解读
本文针对笔者日常开发中对 Mybatis 返回类型的是否需要判断为 null 结合源码,思考总结而来
wayn
2023/01/15
9820
Mybatis返回集合类型到底是空集合还是null?源码解读
Mybatis返回集合类型到底是空集合还是null??源码解读
本文针对笔者日常开发中对 Mybatis 返回类型的是否需要判断为 null 结合源码,思考总结而来
wayn
2023/02/01
4700
thrift:返回null的解决办法
本文讨论了Thrift框架返回null的问题,并提供了相应的解决方案。文章提到,Thrift不允许服务接口返回null,否则会抛出异常。为了解决这个问题,开发人员可以捕获ThriftApplicationException异常,并根据异常类型进行相应的处理。如果异常类型是TApplicationException,并且异常原因是missing_result,那么可以返回null。否则,应该继续向上抛出异常。
10km
2018/01/03
3.7K0
Java中的null“类型”
null是一个非常非常特殊的类型,对于每一个测试人员都要十分小心null的存在的可能性。同时null也让很多RD头疼,甚至连Java的设计者都成人null是一个设计失误。这篇文章,测者想聊聊这个让很多人不喜欢的null。
Criss@陈磊
2019/08/02
2K0
快速学习-Scala Unit类型、Null类型和Nothing类型
Scala Unit类型、Null类型和Nothing类型 Unit类型、Null类型和Nothing类型 基本说明 使用细节和注意事项 Null类只有一个实例对象,null,类似于Java中的nul
cwl_java
2020/02/24
1.4K0
快速学习-Scala Unit类型、Null类型和Nothing类型
以太坊执行miner.start返回null
问题场景 最近技术群中的朋友经常问到这样的问题,环境搭建已经搭建好,geth节点也成功启动,可为什么当执行miner.start()方法时却没有挖矿,返回null。 其实,不仅仅这些朋友,本人在启动最
程序新视界
2017/12/29
2.4K0
php json_decode 返回 null 乱码问题
编码错乱的昵称存在json字符串里,php调用json_decode(xxx, true) 失败,返回null的问题。
shirishiyue
2020/01/01
3.3K0
React报错之ref返回undefined或null
原文链接:https://bobbyhadz.com/blog/react-ref-returns-undefined-or-null[1]
chuckQu
2022/08/19
1.3K0
奇怪的Java题:为什么128 == 128返回为false,而127 == 127会返回为true?
奇怪的Java题:为什么128 == 128返回为false,而127 == 127会返回为true? 在回答这个问题之前,我们先来看看int和Integer的对比,一步步揭开问题的答案。 1. i
互扯程序
2019/06/19
2.3K0
在Java中为什么不同的返回类型不算方法重载?
方法重载是指在同一个类中,定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。 比如以下 4 个 method 方法就可以称之为方法重载,如下代码所示:
磊哥
2022/01/20
3.4K0
在Java中为什么不同的返回类型不算方法重载?
NOW()会返回时区信息
执行NOW()函数获取当前时间时,可以获得日期和服务器所在的时区。很多服务器运行在UTC/GMT,如果用户也使用UTC/TMT,一切都会正常,但是一旦出现时区不匹配(无论是用户程序还是数据库服务或者其他方面),就会出错。因此需要指定。
yzsDBA
2021/01/05
9990
点击加载更多

相似问题

为什么` foo` == bar`和` `bar == foo`会返回不同的结果?

43

为什么GetModuleHandleA会返回NULL?

12

为什么ItemContainerGenerator会返回null?

50

为什么STContains会返回null?

14

为什么findViewById会返回null?

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文