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也做改变,该怎么实现?

...全文
105 点赞 收藏 11
写回复
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; }
}
}
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.