求高手解答:类和对象的问题

UglyUgly 2009-01-03 11:38:07
using System;
using System.Collections.Generic;
using System.Text;

namespace _
{
/// <summary>
/// 自定义类,封装加数和被加数属性
/// </summary>
class MyClass1
{
private int x = 0; //定义int型变量,作为加数
private int y = 0; //定义int型变量,作为被加数
/// <summary>
/// 加数
/// </summary>
public int X
{
get
{
return x;
}
set
{
x = value;
}
}
/// <summary>
/// 被加数
/// </summary>
public int Y
{
get
{
return y;
}
set
{
y = value;
}
}
}
/// <summary>
/// 自定义类,封装求和方法
/// </summary>
class MyClass2
{
MyClass1 myclass1 = new MyClass1(); //实例化MyClass1的对象
/// <summary>
/// 求和
/// </summary>
/// <returns>加法运算和</returns>
public int Add()
{
return myclass1.X + myclass1.Y;
}
}
class Program
{
static void Main(string[] args)
{
//为MyClass1类中的属性赋值
MyClass1 myclass1 = new MyClass1(); //实例化MyClass1的对象

MyClass2 myclass2 = new MyClass2(); //实例化MyClass2的对象
myclass1.X = 3; //为MyClass1类中的属性赋值
myclass1.Y = 5;

Console.WriteLine(myclass2.Add()); //调用MyClass2类中的Add方法求和

Console.ReadLine();
}
}
}


运行结果为0
为什么呢?
myclass1.X = 3; //为MyClass1类中的属性赋值
myclass1.Y = 5;

Console.WriteLine(myclass2.Add()); //调用MyClass2类中的Add方法求和
结果为什么不是8呢?
我是初学者,感谢解答,谢谢!
...全文
70 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tsorgy 2009-01-04
  • 打赏
  • 举报
回复
简单的说就是在Main方法里myclass1和myclass2没有任何关系
因为在实例化MyClass2对象的时候myclass2里的MyClass1的对象是新实例化出来的,并不是Main方法里的myclass1对象

如果可以的话可以改成这样,,,
.
    /// <summary> 
/// 自定义类,封装求和方法.
/// </summary>
class MyClass2
{
MyClass1 myclass1; //实例化MyClass1的对象.
public MyClass2(MyClass1 class1)
{
this.myclass1 = class1;
}
/// <summary>
/// 求和.
/// </summary>
/// <returns>加法运算和 </returns>
public int Add()
{
return myclass1.X + myclass1.Y;
}
}


然后把Main方法里的实例化MyClass2的那条语句改成.

MyClass2 myclass2 = new MyClass2(myclass1);    //实例化MyClass2的对象
dlmeijianyu 2009-01-04
  • 打赏
  • 举报
回复
up
UglyUgly 2009-01-04
  • 打赏
  • 举报
回复
谢谢!
zhzared05 2009-01-03
  • 打赏
  • 举报
回复

Main 函数里有实例一个 MyClass1 对象并且给了他值
但是 Console.WriteLine(myclass2.Add()); 这里 MyClass2 中也有新实例一个 MyClass1 对象,新的 myclass1对象中你并没有给他值,x,y 都为0所以结果为0了!

110,571

社区成员

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

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

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