因为Point是struct,是值类型的。
属性编译后会以函数的形式存在程序中,所以你拿到的p2是个拷贝。使用方法:声明临时变量temp,修改temp,然后再赋值给p2.
解决方案 »
- 数据发送格式说明书1
- C#线程调用
- C#一个关于界面设计的问题
- 关于?:的使用问题
- 急问关于ToCharArray()的使用方法!!!
- 有人成功地使用过C#2005中的DataGridView中的DataGridViewComboBoxColumn没有
- 求教如何在VC#中操作excel2003
- 如何获得本机 IE 的版本?
- 如何在server端产生访问<input type="image">的事件
- 如何將一個exe文件和一個xml配置文件打包到一起,用c#的al.exe可以嗎?
- SqlDataAdapter取数据到前台DataSet奇怪的问题
- 90分(我全部家当),真心求好心人指点,如何终止循环?不是简单的加一个break就行了。。。
{
private Point p;
public Point p2 { get this.value; set p2=p; }
}
private Point _p;
public Point P2
{
get { return _p; }
}
{
private Point p;
public Point p2 { get {return p}; set {p=p2}; }
}
应该是这样的
m.p.Offset(1, 1); //p{1,1}
m.p2 = new Point(0,1);
var tmp = m.p2; //tmp{0,1}
tmp.Offset(1, 2); //tmp{1,3} m.p2.Offset(1, 2); //p2{0,0} 这么奇怪的问题,其实是因为值类型和引用类型的区别。
因为point是指类型这里相当于给一个新的变量赋值,所以offset操作的是tmp。不是p2。
m.p2.Offset(1, 2); //p2{0,0}
应为:
m.p2.Offset(1, 2); //p2{0,1}