C# 获取并设置问题

C# 获取并设置问题,c#,accessor,C#,Accessor,下面是演示我的问题的代码(都在同一命名空间中): 我永远也做不到,我真的很想做。我做错了什么?这些值都将被正确设置,但我似乎从未进入BGroup的set部分 谢谢在您的代码中,您从未设置过BGroup。您正在设置A,这是BGroup的属性 试试像这样的东西 this.Fubar.BGroup = new BoolGroup(); 在代码中,您从未设置BGroup。您正在设置A,这是BGroup的属性 试试像这样的东西 this.Fubar.BGroup = new BoolGroup();

下面是演示我的问题的代码(都在同一命名空间中):

我永远也做不到,我真的很想做。我做错了什么?这些值都将被正确设置,但我似乎从未进入BGroup的set部分


谢谢

在您的代码中,您从未设置过BGroup。您正在设置A,这是BGroup的属性

试试像这样的东西

this.Fubar.BGroup = new BoolGroup();

在代码中,您从未设置BGroup。您正在设置A,这是BGroup的属性

试试像这样的东西

this.Fubar.BGroup = new BoolGroup();

您从未设置过
b组
。您所做的最接近的事情是
Fubar.BGroup.A=true
BGroup=new BoolGroup()
Fubar.BGroup.A=true
获取
BGroup
属性,并在
BoolGroup
对象上设置
A
属性,但不设置
BGroup

bGroup=new BoolGroup()
设置
bGroup
属性的支持字段,这就是为什么在获取
bGroup
时会得到
BoolGroup
,但它不会通过setter

如果要使用setter,则
Foo
类应如下所示:

public class Foo
{
    public Foo()
    {
        // Note uppercase on BGroup to access the property and 
        //   not its backing field.
        BGroup = new BoolGroup(); 
    }

    private BoolGroup bGroup;
    public BoolGroup BGroup
    {
        get{ return this.bGroup; }
        set
        { 
            this.bGroup = value;
            this.doSomething();
        }
    }
}

您从未设置过
b组
。您所做的最接近的事情是
Fubar.BGroup.A=true
BGroup=new BoolGroup()
Fubar.BGroup.A=true
获取
BGroup
属性,并在
BoolGroup
对象上设置
A
属性,但不设置
BGroup

bGroup=new BoolGroup()
设置
bGroup
属性的支持字段,这就是为什么在获取
bGroup
时会得到
BoolGroup
,但它不会通过setter

如果要使用setter,则
Foo
类应如下所示:

public class Foo
{
    public Foo()
    {
        // Note uppercase on BGroup to access the property and 
        //   not its backing field.
        BGroup = new BoolGroup(); 
    }

    private BoolGroup bGroup;
    public BoolGroup BGroup
    {
        get{ return this.bGroup; }
        set
        { 
            this.bGroup = value;
            this.doSomething();
        }
    }
}

您没有使用以下语句调用BGroup属性的setter:

this.Fubar.BGroup.A = true;

“this.Fubar.BGroup”调用getter(返回BoolGroup)并使用“.a=true”调用BoolGroup的a属性的setter。

您没有使用以下语句调用BGroup属性的setter:

this.Fubar.BGroup.A = true;
this.Fubar.BGroup.A = true;
“this.Fubar.BGroup”调用getter(返回BoolGroup)并使用“.a=true”调用BoolGroup的a属性的setter

this.Fubar.BGroup.A = true;
正在设置Fubar.BGroup的属性A,但未设置Fubar.BGroup


正在设置Fubar.BGroup的属性A,但未设置Fubar.BGroup。

您的代码看起来很好。它没有触发的原因是,您实际上没有在任何地方设置Fubar.BGroup。您正在表单构造函数中设置Fubar.BGroup.A…这不会触发doSomething方法。您需要执行以下操作:

this.Fubar.BGroup = new BGroup();
或者在Foo构造函数中内部执行此操作:

public Foo()
{
    this.BGroup = new BGroup();
}

你的代码看起来不错。它没有触发的原因是,您实际上没有在任何地方设置Fubar.BGroup。您正在表单构造函数中设置Fubar.BGroup.A…这不会触发doSomething方法。您需要执行以下操作:

this.Fubar.BGroup = new BGroup();
或者在Foo构造函数中内部执行此操作:

public Foo()
{
    this.BGroup = new BGroup();
}

你指的是什么语言?如果你把语言放在标签里,你会让更多的人看到它,我想是C?肯定是C。我们在这里看到的所有东西都用的是什么其他语言?你指的是什么语言?如果你把语言放在标签里,你会让更多的人看到它,我想是C#?肯定是C#。我们在这里看到的所有东西都用了什么其他语言?你的第一个建议很好,但是你的第二个建议基本上和他已经在做的一样。你的意思是
this.BGroup=new BGroup()?抱歉,是的,这应该是属性,而不是我分配的私有字段。我会更新。你的第一个建议很好,但是你的第二个建议基本上和他已经在做的一样。你的意思是
this.BGroup=new BGroup()?抱歉,是的,这应该是属性,而不是我分配的私有字段。我会更新。所有的答案都解决了问题,但这一个对我解释得最好。谢谢大家。所有的答案都解决了问题,但这一个对我解释得最好。谢谢大家。