【问题标题】:Assign a value to a property of a class within a class为类中的类的属性赋值
【发布时间】:2015-04-20 21:54:18
【问题描述】:

我有以下代码

class TopClass
{
    public string ClsProp1 { get; set; }
    public string ClsProp2 { get; set; }

    public SubClass ClsProp3 { get; set; }
}

class SubClass
{
    public string SCProp1 { get; set; }
    public string SCProp2 { get; set; }
}


class Program
{
    static void Main(string[] args)
    {

        Test.TopClass TCN = new Test.TopClass();

        TCN.ClsProp1 = "TCProp1--string value";
        TCN.ClsProp2 = "TCProp2--string value";
        TCN.ClsProp3.SCProp1 = "SCProp1--string value";
        TCN.ClsProp3.SCProp2 = "SCProp2--string value";

    }
}

我似乎无法弄清楚如何实例化 TCN.ClsProp3.ScProp1 和 TCN.ClsProp3.ScProp2 值。我不断收到“Test.exe 中出现“System.NullReferenceException”类型的未处理异常 附加信息:对象引用未设置为对象的实例。”错误消息。原谅我的无知,我真的想从头开始学习 OOP。

提前致谢

【问题讨论】:

    标签: c# class oop


    【解决方案1】:

    您需要先初始化ClsProp3 对象,然后才能使用它。

    TCN.ClsProp3 = new SubClass();
    

    您也可以像这样在TopClass 构造函数中初始化它:

    class TopClass
    {
        public TopClass()
        {
            ClsProp3 = new SubClass();
        }
        public string ClsProp1 { get; set; }
        public string ClsProp2 { get; set; }
    
        public SubClass ClsProp3 { get; set; }
    }
    

    【讨论】:

    • Doh.. 我不敢相信它这么简单。我很确定我的代码中有这个。感谢您花时间回答。
    【解决方案2】:

    学习时,最好选择一个好的领域。 TopClassClsPropX 不会带来好的学习体验。

    至于您最初的问题,启动调试器并查看ClsProp3 等于什么。请记住,不可能将任何东西分配给“虚无”,在 C# 用语中是 null

    【讨论】:

    • 我不确定我是否理解您的评论,但还是感谢您抽出宝贵时间发表评论。
    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2015-05-08
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多