猿问

大侠们:这串代码输出什么以及原因?不要拷到VS中运行!

声明一个结构体类型的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);
哔哔one
浏览 590回答 4
4回答

一只甜甜圈

1,1     2,2 2,2 2,2 和楼上一样,我估计前三个没有难度,你想考大家的是最后一个为什么是2,2吧?

森林海

自己理解的答案是: 1,1     2,2 2,2 2,2 实际vs运行的答案:跟上一样 楼主看下关注拆箱和装箱的知识,这个题目是clr vir c# 那本书上的吧

忽然笑

是的,开始看理解的不是很深,问下大家,关注的还是值类型和引用类型、线程栈和堆

胡说叔叔

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
随时随地看视频慕课网APP

相关分类

Java
我要回答