c#中几个不明白!大家快来解答!

j_hunter 2007-10-12 10:39:25
using System;
class primitive
{
public bool b;
}

public class DefaultValue2
{
primitive p = new primitive();
int i;
public static void Main()
{
DefaultValue2 D = new DefaultValue2();
DefaultValue2 P = new DefaultValue2();
Console.WriteLine("D after creation = {0}", D);
Console.WriteLine("P after creation = {0}", P);
Console.WriteLine("num of D1 = {0}", D.i);
Console.WriteLine("num of P1 = {0}", P.i);
D.i = 2;
Console.WriteLine("num of D2 = {0}", D.i);
Console.WriteLine("num of P1 = {0}", P.i);
Console.WriteLine("p after creation = {0}", D.p);

primitive d = new primitive();
Console.WriteLine("d after creation = {0}", d);
Console.WriteLine("bool of d1 = {0}", d.b);
Console.WriteLine("bool of p1 = {0}",D.p.b);
d.b = true;
Console.WriteLine("bool of d2 = {0}", d.b);
Console.WriteLine("bool of p2 = {0}", D.p.b);
}
}

Console.WriteLine("D after creation = {0}", D);
Console.WriteLine("P after creation = {0}", P);
解释下为什么这两句的运行结果是:DefaultValue2


d.b = true;
Console.WriteLine("bool of d2 = {0}", d.b);
Console.WriteLine("bool of p2 = {0}", D.p.b);

这句中d.b都赋值true了怎么用D.p.b调用又成False了???

问题很弱@ 望大家不吝赐教!!! 万分感激啊~
...全文
137 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
q359600900 2007-10-12
  • 打赏
  • 举报
回复
看来问题解决了,接分
txwd0033 2007-10-12
  • 打赏
  • 举报
回复
楼主的第二个问题是由于引用的是不同的对象
glboy12 2007-10-12
  • 打赏
  • 举报
回复
Console.WriteLine("D after creation = {0}", D);
{0}是D的占位符,
D ,和P本来就是DefaultValue2的一个对象
aamaomao 2007-10-12
  • 打赏
  • 举报
回复
这句中d.b都赋值true了怎么用D.p.b调用又成False了???

应为d和D.p不是同一个对象,D.p中的是默认的值
aamaomao 2007-10-12
  • 打赏
  • 举报
回复
因为调用object的tostring()函数,所以输出了类型的名称
public virtual string ToString()
{
return this.GetType().ToString();
}
j_hunter 2007-10-12
  • 打赏
  • 举报
回复
呵呵#谢谢大家回答#现在明白多了#我是刚学#所以6楼说的对啊#还是要多看看书@
fox_keven 2007-10-12
  • 打赏
  • 举报
回复
都是对象引用方面的问题,LZ该多看看书。

110,534

社区成员

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

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

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