问一个想不明白的问题,大神们请给个解答,万分感谢.

gf_iLoveU 2011-07-04 02:39:07
代码如下: 红色的注释有问题,能给解答么?


private void button1_Click(object sender, EventArgs e)
{

Test t = new Test();

t.PID = "SSSS";

ITest i = t;

i.Pro.ID = "AAAAA";//为什么这里的"AAAAA"没有赋值,跑哪里去了?


MessageBox.Show(i.Pro.ID);
}

public class Property
{
public string ID { get; set; }

public string Name { get; set; }
}

public interface ITest
{
Property Pro { get; set; }
}

public class Test : ITest
{

public string PID { get; set; }
public string PName { get; set; }


#region ITest 成员

Property p = new Property();

Property ITest.Pro
{
get
{
p.ID = this.PID;
p.Name = this.PName;

return p;
}
set
{
p = value;
this.PID = p.ID;
this.PName = p.Name;
}
}

#endregion
}
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gf_iLoveU 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 anbam 的回复:]

i.Pro.ID = "AAAAA";//为什么这里的"AAAAA"没有赋值,跑哪里去了?

//赋值成功

System.Diagnostics.Trace.Write(i.Pro.ID);

//此时,进入代码段get
{
p.ID = this.PID;//重新赋值sss

所以你得不到想要的值
……
[/Quote]

我知道,但是如何才能得到我想要的值呢?
anbam 2011-07-04
  • 打赏
  • 举报
回复
i.Pro.ID = "AAAAA";//为什么这里的"AAAAA"没有赋值,跑哪里去了?

//赋值成功

System.Diagnostics.Trace.Write(i.Pro.ID);

//此时,进入代码段get
{
p.ID = this.PID;//重新赋值sss

所以你得不到想要的值


gf_iLoveU 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 gf_iloveu 的回复:]
代码如下: 红色的注释有问题,能给解答么?


private void button1_Click(object sender, EventArgs e)
{

Test t = new Test();

t.PID = "SSSS";

ITest i = t;

……
[/Quote]

您指的属性是哪个? 我对Pro的属性取值,是在Get里面,想把Test类中的PID属性和PName属性组合,变为Pro的值.
当Pro类被赋值时候,想对Test类中的PID和PName赋值.不知道这么写有什么问题?
gf_iLoveU 2011-07-04
  • 打赏
  • 举报
回复
有人知道么?
我暂时想到个方法,就是new一个Propery的实例
Property pTemp = new Propery();
pTemp.ID = "AAAAA";
i.Pro = pTemp;

如此i.Pro.ID 才能接受"AAAAA";

难道非得如此么? 那我的程序就得改成花了.求大神帮忙.
xpcxpy 2011-07-04
  • 打赏
  • 举报
回复
            Property ITest.Pro
{
get
{
p.ID = this.PID;
p.Name = this.PName;

return p;
}
set
{
p = value;
this.PID = p.ID;
this.PName = p.Name;
}
}
你这属性写的,就是这个意思吧,你的测试程序里,只对该属性进行了取值,并没有进行赋值

110,534

社区成员

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

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

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