反射的值类型引发的一个性能问题

hainang1234 2007-08-01 01:44:41
由于我要利用反射不时检查一系列属性的值,而其值应该返回的是bool,那么利用反射则会多次出现装箱与拆箱。
请问我是否应该改为返回其它引用类型呢?比如用字符串"1"表示true。这样有必要吗?或者说这种设计方式正确吗?
...全文
120 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hainang1234 2007-08-01
  • 打赏
  • 举报
回复
danjiewu(阿丹) ( ) 信誉:100 2007-8-1 14:01:42 得分: 0


没必要,跟反射比装拆箱那点性能影响可以忽略了。
_______________________________

我会在第一次存储需要调用的属性信息(PropertyInfo[] properties),也就是说以后不需要每次用的时候都查找,那么反射带来的性能影响就只体现在调用(properties[0].GetValue)(我不太清楚反射来调用会不会有或者说有多大性能影响)。

但若是不解决装箱问题,那么装箱在每一次都会发生,所以我认为有必要。
chanfengsr 2007-08-01
  • 打赏
  • 举报
回复
反射是C#经过优化的,应该不会很慢!


高手有空帮忙看下这个困难问题帖子!!谢谢!
http://community.csdn.net/Expert/topic/5684/5684900.xml?temp=.9734461
yuewh491 2007-08-01
  • 打赏
  • 举报
回复
.net方面的招聘群,希望猎头们和人力还有想找工作的兄弟们都加进来啊,拒绝骗子,拒绝忽悠
群号:6926991
hainang1234 2007-08-01
  • 打赏
  • 举报
回复
目前先采用第二种:
public class EnabledStatus
{
bool _enabled;
public bool Enabled
{
get { return _enabled; }
}
private EnabledStatus(bool enabled)
{
this._enabled = enabled;
}

public static EnabledStatus True = new EnabledStatus(true);
public static EnabledStatus False = new EnabledStatus(false);
public static EnabledStatus GetEnabledStatus(bool enabled)
{
if (enabled)
{
return True;
}
else
{
return False;
}
}
}
danjiewu 2007-08-01
  • 打赏
  • 举报
回复
没必要,跟反射比装拆箱那点性能影响可以忽略了。
hainang1234 2007-08-01
  • 打赏
  • 举报
回复
又或者,自己定义一个类,这个类只提供两个实例,一个表示true,一个表示false。哪种更好?
hainang1234 2007-08-01
  • 打赏
  • 举报
回复
或者直接定义两个static readonly 的object,代表true和false,这样似乎性能会更好,不需要构造额外的对象,不需要类型转型,只需要比较引用。

大家觉得这样设计好不好?

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧