首页 新闻 会员 周边

关于一个静态方法和反射的问题?

0
[已解决问题] 解决于 2010-08-11 11:01

先看一下代码,petshop4.0

public static PetShop.IDAL.ICategory CreateCategory() {
string className = path + ".Category";
return (PetShop.IDAL.ICategory)Assembly.Load(path).CreateInstance(className);
}

都知道反射会降低一些性能,
有同事说像这样放在一个静态方法里就不会了.
但是我觉得还是会走那个反射的.
但不知道原理.
请达人解惑.

 

问题补充: 感谢下面的回答, 其实我主要困惑的地方是, 一个静态方法,是不需要实例化,常 驻内存的. 一个静态变量我还好理解,就是实实在在的一块空间放在那. 但是静态方法又是怎么在内存里分配的呢?方法只是一个架子,并没有什么实在的东西,理解不了.哪位给生动的解释一下?
蝗虫的大腿的主页 蝗虫的大腿 | 初学一级 | 园豆:22
提问于:2010-08-11 10:26
< >
分享
最佳答案
0

函数内部执行是一样效率的。

主要是静态方法比实例方法在调用时候的差别,就像你要用刀切菜,静态方法是已经有一把刀了,拿来就用,实例方法代表着你需要先造一把刀,然后才能用。

灰灰狼 | 初学一级 |园豆:5 | 2010-08-11 10:54
其他回答(2)
0

你同事说的错的。

放在静态方法里还是会反射的,因为你的代码里肯定需要调用到这个静态方法,既然调用到了这个静态方法,那肯定会执行到这个方法里的反射。

使用静态方法是为了方便,无需实例化类。

kyo-yo | 园豆:5587 (大侠五级) | 2010-08-11 10:34
0

没看出来哪儿快了,顶多是static CreateCategory 比 CreateCategory 执行快,跟反射没关系。

Launcher | 园豆:45045 (高人七级) | 2010-08-11 10:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册