给内部类对象分配值

4
我有一个如下的类:
public class HintQuestion
{
    public string QuestionCode { get; set; }
    public string QuestionName { get; set; }
}

还有另一个类如下所示

public class User
{
    public User()
    {
        HintQuestion = new HintQuestion();
    }
    public HintQuestion HintQuestion { get; set; }
}

问题在于当我创建一个 User 类的实例并给内部类对象赋值时,它不起作用。我正在使用对象初始化。
User u=new user{HintQuestion.QuestionCode  ="",...

但是当我创建构造函数时,它能正常工作。


6
我认为你需要执行User u = new user { HintQuestion = new HintQuestion { QuestionCode = "", QuestionName = "" } };User u = new user { HintQuestion = new HintQuestion() };。你也可以尝试User u = new User { HintQuestion.QuestionCode = "", };,但我不知道是否会出现NRE。顺便说一下,与类名相同的变量名会令人困惑。 - Tim
3
@Tim,我认为将属性名称与类名相同是一种指南。如果您只有一个具有该类型的属性,则至少wpf和winform存在许多这样的情况:Visibility、CacheMode、ContextMenu。 - Atomosk
@Atomosk - 从未在WPF上工作过,WinForms也仅仅做了一点点。快速的谷歌搜索似乎显示WPF至少经常这样做。我仍然认为这是一个不好的主意,但我只是千万声音中的一个 :) - Tim
@Șhȇkhaṝ - 当你执行 new User { HintQuestion.QuestionCode="" 时,是否出现了错误?如果有,错误信息是什么?还是没有问题? - Tim
@Tim 谢谢你的解释。 - शेखर
显示剩余5条评论
2个回答

4
使用对象初始化器,您需要像在构造函数中一样设置属性,将对象分配给它,您也可以使用初始化器创建该对象:
User u = new User {
    HintQuestion = new HintQuestion { QuestionCode = "", QuestionName = "" }
};

3
    public class HintQuestion
    {
        public string QuestionCode { get; set; }
        public string QuestionName { get; set; }
    }

    public class User
    {
        public User()
        {
            this.HintQuestion = new HintQuestion();
        }
        public HintQuestion HintQuestion { get; set; }
    }


User u = new User { HintQuestion = new HintQuestion { QuestionCode = "test", QuestionName = "test1" } };

如果您能添加一些对错误的说明,以便更明显地解决问题,那就太好了。 - ChiefTwoPencils

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接