zhuweisky

君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。

ESFramework,基于.NET的通信框架。DataRabbit,轻量的数据访问框架。sky.zhuwei@163.com
posts - 191, comments - 1276, trackbacks - 94, articles - 1
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

你知道 typeof(void) 吗?

Posted on 2008-05-21 10:31 zhuweisky 阅读(3409) 评论(17)  编辑 收藏 所属分类: C#专栏
    void 也是.NET中的一种类型,只不过在C#中看不到“System.VOid”这种Type,而在IL这一层是可以看到的。
    如果我们要通过反射判断一个方法是否有返回值,比较直观的解决办法好像是这样:    
MethodInfo originMethod = ;
if (originMethod.ReturnType != null)
{
    
//
}
    然而运行后,你会发现,在任何情况下,originMethod.ReturnType的值始终不会为null,即使originMethod没有返回值--这种情况下,originMethod.ReturnType的结果是typeof(void)。所以,改成如下的方式即可:
MethodInfo originMethod = ;
if (originMethod.ReturnType != typeof(void))
{
    
//
}
    void类型和其他Type一样,是一种IL的基本类型。在反射或使用Emit动态生成程序集时要特别注意这一点。
    

Feedback

#1楼    回复  引用  查看    

2008-05-21 10:36 by Franz      
好像以前看到过关于void类型的介绍。
这个问题的确很容易出错!

#2楼    回复  引用  查看    

2008-05-21 10:40 by Zhuang miao      
掌握了个小知识

#3楼    回复  引用  查看    

2008-05-21 10:45 by Gray Zhang      
就是System.Void,有一次不知怎么就弄出来了,编译器提示要用关键字void而不是System.Void

#4楼    回复  引用  查看    

2008-05-21 10:54 by henry      
原来是typeof(void)而不是typeof(System.Void)...
结果最后用string来比较

#5楼    回复  引用  查看    

2008-05-21 10:56 by 王孟军!      
挺好

#6楼    回复  引用  查看    

2008-05-21 11:34 by 瑞克梅塔      
学习了

#7楼    回复  引用  查看    

2008-05-21 11:34 by 玉开      
xiexie

#8楼    回复  引用  查看    

2008-05-21 12:40 by alisx      
好,知道了

#9楼    回复  引用  查看    

2008-05-21 12:57 by →遇建←      
受教了。

#10楼    回复  引用  查看    

2008-05-21 17:19 by aspnetx      
受教了

#11楼    回复  引用  查看    

2008-05-21 17:39 by John Rambo      
Worth to read.

#12楼    回复  引用  查看    

2008-05-21 19:47 by Q.Lee.lulu      
学习了!!

#13楼    回复  引用  查看    

2008-05-22 00:15 by 啊不才      
Console.WriteLine(typeof(void));
得到是System.Void

#14楼    回复  引用  查看    

2008-05-22 00:18 by 黃偉榮      
学习了

#15楼    回复  引用  查看    

2008-05-22 10:14 by Klesh Wong      

#16楼    回复  引用  查看    

2008-05-22 11:27 by 隐姓埋名      
恩! 不错!

#17楼    回复  引用  查看    

2008-05-22 19:32 by 李涛      
解决一个小虫子,不错

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索

相关链接: