如何设计具有嵌套属性的类?c#

如何设计具有嵌套属性的类?c#,c#,C#,如何设计具有嵌套属性的类。比如instance.property1.property2 请用c#中的小代码讨论这个问题,因为类将具有嵌套属性。 谢谢您需要第一个属性返回的任何内容才能拥有第二个属性 class Class1 { public Class2 property1 { get { return new Class2(); } } } class Class2 { public so

如何设计具有嵌套属性的类。比如instance.property1.property2

请用c#中的小代码讨论这个问题,因为类将具有嵌套属性。
谢谢

您需要第一个属性返回的任何内容才能拥有第二个属性

class Class1
{
    public Class2 property1
    {
        get
        {
            return new Class2();
        }
    }
}

class Class2
{
    public some_type property2
    {
        get
        {
            return some_value;
        }
    }
}
物业在这里可以使用


话虽如此,我不知道在什么情况下需要针对这种语法。这通常只是OO结构的结果。另外,像这样的嵌套属性调用会产生不必要的小开销(属性每次被访问时都调用代码,除非进行任何编译时优化)

您需要第一个属性返回的任何内容才能拥有第二个属性

class Class1
{
    public Class2 property1
    {
        get
        {
            return new Class2();
        }
    }
}

class Class2
{
    public some_type property2
    {
        get
        {
            return some_value;
        }
    }
}
物业在这里可以使用


话虽如此,我不知道在什么情况下需要针对这种语法。这通常只是OO结构的结果。另外,像这样的嵌套属性调用会产生不必要的小开销(属性每次被访问时都调用代码,除非进行任何编译时优化)

尝试使用带有静态或常量属性的嵌套类:

public class A    {
        public class B
        {
            public constant string C = "something";
        }
}

然后,访问:A=新A();a、 B.C==“something”

尝试使用具有静态或常量属性的嵌套类:

public class A    {
        public class B
        {
            public constant string C = "something";
        }
}

然后,访问:A=新A();a、 B.C==“某物”

类似的东西例如:

class A
{
  public B B { get; set; }
}

class B
{
  public string C { get; set; }
}
然后


比如说:

class A
{
  public B B { get; set; }
}

class B
{
  public string C { get; set; }
}
然后


您可以使用不同的类:

public class MainClass
{
   public SampleProp property1 {get;set;}
}
public class SampleProp
{
   public string property2 {get;set;}
}

MainClass test = new MainClass();
var prop = test.property1.property2;

您可以使用不同的类:

public class MainClass
{
   public SampleProp property1 {get;set;}
}
public class SampleProp
{
   public string property2 {get;set;}
}

MainClass test = new MainClass();
var prop = test.property1.property2;

堆栈溢出不是一个讨论论坛。跟我说。你说什么?你是说Class1.Class2.Property?堆栈溢出不是一个讨论论坛。跟我说。你说什么?你是说1类,2类,财产?为什么?如果我在Class1中定义Class2属性,那么它可以返回任何基本类型Class1.Class2.id每次调用该属性时是否真的要新建一个Class2?@TimJarvis只是一个例子。获取property1有效输出的最快方法。显然,那太可怕了。除非是工厂。但我不知道你会想要一个工厂,为什么?如果我在Class1中定义Class2属性,那么它可以返回任何基本类型Class1.Class2.id每次调用该属性时是否真的要新建一个Class2?@TimJarvis只是一个例子。获取property1有效输出的最快方法。显然,那太可怕了。除非是工厂。但是我不知道你会想要一个工厂,那么你不应该展示B是如何构造的吗?编写的代码会导致异常。@蒂姆·贾维斯:当然,它会导致异常。。。我只是展示这个想法,而不是实现一个完整的解决方案。那么你不应该展示B是如何构造的吗?编写的代码会导致异常。@蒂姆·贾维斯:当然,它会导致异常。。。我只是展示这个想法,而不是实现一个完整的解决方案。还有boom…除非你在某个地方新建SampleProp…@Tim Jarvis,是的,还有boom,但新建字段不是测试类的责任,因此我把它留给读者在他的相关项目中完成,它只是展示编译和使用,我应该编写完整的示例代码来完成它,但我认为没有必要这样做。而且,boom…除非你在某处新建SampleProp…@Tim Jarvis,是的,boom,但这不是测试类对新建字段的责任,因此我将它留给读者在他的相关项目中执行,它只是显示编译和使用情况,我应该编写完整的示例代码来完成它,但我认为没有必要这样做。