C#对象问题

睡神在睡觉 2010-11-25 03:54:51
class A
{
private int _cnt = 0;
public int cnt
{
get { return _cnt; }
set { _cnt = Value; }
}

private A _parent= 0;
public A parent
{
get { return _parent; }
set { _parent= Value; }
}
}

当A中cnt改变,让A父级的cnt也做改变,该怎么实现?

...全文
142 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
睡神在睡觉 2010-11-25
  • 打赏
  • 举报
回复
谢谢楼上几位,搞定了,自己把自己绕进去了。~~~~~~呵呵,
兔子-顾问 2010-11-25
  • 打赏
  • 举报
回复
按1楼所说,如果是单一的父级可以改变,但是如果父级有N层,一直到顶层都要改变就实现不了,如果你希望,你直接修改一点不就好了。谁知道你想怎么做呢?

public static void Test()
{
A x = new A();
x.parent = new A();
x.cnt = 5;
Console.WriteLine(x.parent.cnt);
}

class A
{
private int _cnt = 0;
public int cnt
{
get
{
return _cnt;
}
set
{
_cnt = value;
if (_parent != null) _parent.Cnt = value;//使用属性即可
}
}

private A _parent = null;
public A parent
{
get { return _parent; }
set { _parent = value; }
}
}
garfieldzf 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyazhe 的回复:]
C# code
class A
{
private int _cnt = 0;
public int cnt
{
get
{
return _cnt;
}
set
{
_cnt = Value;
……
[/Quote]

这个可以实现吧
TireYang 2010-11-25
  • 打赏
  • 举报
回复
运行结果是 5 5
TireYang 2010-11-25
  • 打赏
  • 举报
回复
表达能力有限,希望楼主能看懂
TireYang 2010-11-25
  • 打赏
  • 举报
回复

using System;

namespace ConsoleApplication1
{
class Program
{
static void Main()
{
A x = new A();
A y = new A();
A z = new A();

x.parent = y;


y.parent = z;
x.cnt = 5;

Console.WriteLine(y.cnt + " " + z.cnt);
Console.ReadKey();
}

}
class A
{
private int _cnt;
public int cnt
{
get
{
return _cnt;
}
set
{
_cnt = value;
if (_parent != null) parent.cnt = value;//应该父级属性的cnt属性赋值,本来是_parent._cnt = value;这只是给当前对象中的parent这个属性中的cnt赋值而不是给父级中的cnt赋值
}
}

private A _parent;
public A parent
{
get { return _parent; }
set { _parent = value; }
}
}
}

睡神在睡觉 2010-11-25
  • 打赏
  • 举报
回复
自己顶下。。。。没人跟了么?
睡神在睡觉 2010-11-25
  • 打赏
  • 举报
回复
  static void Main(string[] args)
{
A x = new A();
A y = new A();
A z = new A();

x.parent = y;
y.parent = z;

x.cnt = 5;
Console.WriteLine(y.cnt + " " + z.cnt);
Console.ReadKey();
}
/*
输出 5 0
*/



按1楼所说,如果是单一的父级可以改变,但是如果父级有N层,一直到顶层都要改变就实现不了,
hitlcyu19 2010-11-25
  • 打赏
  • 举报
回复
你给_parent赋值就可以了
[Quote=引用 1 楼 wuyazhe 的回复:]

C# code
class A
{
private int _cnt = 0;
public int cnt
{
get
{
return _cnt;
}
set
{
_cnt = Value;
if(_pa……
[/Quote]
兔子-顾问 2010-11-25
  • 打赏
  • 举报
回复
public static void Test()
{
A x = new A();
x.parent = new A();
x.cnt = 5;
Console.WriteLine(x.parent.cnt);
}

class A
{
private int _cnt = 0;
public int cnt
{
get
{
return _cnt;
}
set
{
_cnt = value;
if (_parent != null) _parent._cnt = value;
}
}

private A _parent = null;
public A parent
{
get { return _parent; }
set { _parent = value; }
}
}
兔子-顾问 2010-11-25
  • 打赏
  • 举报
回复
class A
{
private int _cnt = 0;
public int cnt
{
get
{
return _cnt;
}
set
{
_cnt = Value;
if(_parent != null) _parent._cnt = value;
}
}

private A _parent;
public A parent
{
get { return _parent; }
set { _parent= Value; }
}
}

110,534

社区成员

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

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

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