变量定义的问题

OneCoderr 2017-08-19 05:00:14
int x, y;
Point p1;

private void C1()
{
p1 = new Point(x, y);
}

//-----
private void C2()
{
Point p2 = new Point(x, y);
}

如上,过程C1,C2都是频繁使用的。 p1在外面定义了,但咋C1中也是要new的;P2在C2中定义。 请问P1和P2这两种定义方式对性能影响一样吗?
...全文
443 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
当你使用 C1 时,你必须要 new 初始化新的值。此时根本看不出放到外边去定义、引用变量有什么必要。多余的东西往往还不如不及,这里的声明就是无意义的。
  • 打赏
  • 举报
回复
引用 2 楼 szcoolly 的回复:
上面打错了一个字:但在C1中也是要new的。 两个过程都要new,都存在重新分配内存的操作,所以我觉得这两种方式一样。 如果不需要new,我怎么觉得第一方式会好些,不要重新分配内存了。 求指点。
既然你知道你必须 new,那么其它的就是多余的。
  • 打赏
  • 举报
回复
有必要频繁的new。性能主要是看你究竟有多频繁。其实没必要反复new。如果是一次。性能无所谓
  • 打赏
  • 举报
回复
“性能”问题,自己写一个测试程序自己统计测试一下吧。主要是要关心的使用目的和方法问题,当不应该扩大其范围时,为什么要把变量定义到方法外边? 完全不能理解第一种定义的目的是要干什么?!
threenewbee 2017-08-19
  • 打赏
  • 举报
回复
看你函数本身调用是否频繁,你还可以这样 private void C1() { p1 = p1 ?? new Point(x, y); }
xuzuning 2017-08-19
  • 打赏
  • 举报
回复
Point p1 = Point.Empty; private void C1() { p1.X= x; p1.Y = y; }
OneCoderr 2017-08-19
  • 打赏
  • 举报
回复
上面打错了一个字:但在C1中也是要new的。 两个过程都要new,都存在重新分配内存的操作,所以我觉得这两种方式一样。 如果不需要new,我怎么觉得第一方式会好些,不要重新分配内存了。 求指点。
ChbaiMou 2017-08-19
  • 打赏
  • 举报
回复
第一个问题不是静态类的Point类的引用是需要实例化的,实例化必须要new,Point P1只是定义了它,不能用的;第二个问题P1在方法外面定义了属于全局变量会占用内存,所以性能方面P2更好一点,但实际上只有这一个的话不会有什么影响

110,502

社区成员

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

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

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