聲明一個結構體類型的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
提交
取消