C#类属性-设置和获取麻烦

时间:2019-01-04 02:16:31

标签: c#

我已经建立了一个非常简单的C#类(下面的代码),并已成功地对其属性运行set / get。但是我无法访问嵌套类。

这是该类的代码(或更确切地说,是它的简化)。

class TestClass
{
    public string example { get; set; }
    public NestedClass nestedclass { get; set; }

    public class NestedClass 
    {
        public string nestedExample { get; set; }
    }
}

这是获取/设置属性的函数。我可以设置并获取

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        //initialize new TestClass
        TestClass testclass = new TestClass();
        //assign arbitrary value to testclass.example
        testclass.example = "this works fine";

        //TestLabel content is changed to "this works fine", no issues
        TestLabel.Content = testclass.example;

        //now assign a value to nestedExample
        testclass.nestedclass.nestedExample = "this doesn't";

        //this will return System.NullReferenceException: 'Object reference not set to an instance of an object.' How come?
        TestLabel2.Content = testclass.nestedclass.NestedExample;

    }

我希望上面的代码将testclass.nestedclass.nestedExample的值设置为“ this not”,但是由于某种原因,它将返回上面的错误。有人知道我哪里出问题了吗?

2 个答案:

答案 0 :(得分:0)

您需要以某种方式对其进行初始化

示例

class TestClass
{
    public string example { get; set; }
    public NestedClass nestedclass { get; set; } = new NestedClass();

class TestClass
{
    public string example { get; set; }
    public NestedClass nestedclass { get; set; }

    public TestClass ()
    {
        nestedclass = new NestedClass();
    }

或在使用前将其初始化。


但是,当我们在这里时。

  1. 没有多少人用小写字母命名属性
  2. 实际上没有多少人会将此类嵌套在另一个类中,为此几乎没有用例,只会使您的代码混乱。

答案 1 :(得分:0)

您需要先实例化嵌套的类,然后再分配任何值。

testclass.nestedclass = new TestClass.NestedClass();

testclass.nestedclass.nestedExample = "this does now";