声明一个结构体类型的Point
1 public struct Point
2 {
3 private int x;
4 private int y;
5 public Point(int _x, int _y)
6 {
7 this.x = _x;
8 this.y = _y;
9 }
10 public void Change(int _x, int _y)
11 {
12 this.x = _x;
13 this.y = _y;
14 }
15 public override string ToString()
16 {
17 return string.Format("({0},{1})", this.x, this.y);
18 }
19 }
2、分布采取不同的操作后,会在控制台输出什么内容?
1 Point p = new Point(1, 1);
2 Console.WriteLine(p);
3
4 p.Change(2, 2);
5 Console.WriteLine(p);
6
7 object o = p;
8 Console.WriteLine(o);
9
10 ((Point)o).Change(3, 3);
11 Console.WriteLine(o);
4 回答

森林海
TA贡献2011条经验 获得超2个赞
自己理解的答案是:
1,1
2,2
2,2
2,2
实际vs运行的答案:跟上一样
楼主看下关注拆箱和装箱的知识,这个题目是clr vir c# 那本书上的吧

胡说叔叔
TA贡献1804条经验 获得超8个赞
Point p = new Point(1, 1);
Console.WriteLine(p); // 1,1
p.Change(2, 2);
Console.WriteLine(p); //2,2
object o = p; //装箱, o 是一个新的引用类型的变量, 内部的值是当前p的值
Console.WriteLine(o); //2,2
Point q = ((Point)o); //拆箱, q是一个新的值类型的变量 - 与原来的o没关系了
q.Change(3, 3);
Console.WriteLine(o); //o 还是 2,2
Console.WriteLine(q); //新的q值 为 3,3
添加回答
举报
0/150
提交
取消