【问题标题】:Value always null for setter设置器的值始终为空
【发布时间】:2021-03-23 02:55:40
【问题描述】:

我有下面的课程。 Coach 属性用作 Coach 字段的访问器。它检查是否存在现有的“Club”值,如果没有,则将“Coach”分配给该“Club”。

public class Club
    {
        private Coach coach;

        public Coach Coach
        {
            get
            {
                return coach;
            }
            set
            {
                if (value.Club != null)
                {
                    coach = value;
                }
                else
                {
                    coach = null;
                }
                 
            }
        }

在我的车手课程中,我有类似下面的代码将教练分配给俱乐部。但是,当我运行它时,该值将始终为 null,并且我似乎无法通过 Coach 访问器为“coach”字段正确分配值。

private static void AssignCoach(Club club1, Coach coach1)
{
 club1.Coach = coach1;
}

AssignCoach(club1, coach1);

【问题讨论】:

  • 这个问题没有为我们提供足够的信息来调试问题。请提供minimal reproducible example。猜测一下,您的if 语句条件未得到满足。
  • 您显示的代码可以正常工作,我猜您的其他代码会感到困惑,因为您有教练和俱乐部的循环引用
  • 尝试分配一个已经拥有俱乐部的教练,你会看到你的错误;)

标签: c# properties field getter-setter accessor


【解决方案1】:

本规范:

它检查是否存在现有的“Club”值,如果没有,则将“Coach”分配给该“Club”。

此代码未实现:

                if (value.Club != null)
                {
                    coach = value;
                }

代码的意思是“如果传入的教练已经有一个俱乐部,让他们成为这个俱乐部的教练”

规范读作“如果传入的教练没有俱乐部,则让他们成为该俱乐部的教练”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多