.net 作为类中成员的嵌套结构

6qqygrtg  于 2023-01-03  发布在  .NET
关注(0)|答案(4)|浏览(184)

我正在写一个包含90个整型变量的类。基本上有10个,但是每个变量都有3x3属性,所以它们有90个。我会进一步解释它。
所以我有10个变量:v0,v1,v2,...,v9。其中每个都有三个不同的值,分别对应于城市、县和州。此外,其中每个都有三个不同的值,分别对应于过去、现在和将来。
因此,典型值为:v3.城市.未来或v7.州.过去或v8.县.现在。
我想实现一个类,每个变量有10个结构体,每个结构体有三个嵌套的结构体(城市、县和州),每个结构体有三个整型变量,分别代表过去、现在和未来。
这还处于概念阶段。我试着用上面提到的方法,但行不通。
下面是代码片段:

public class MyClass
{
    public MyVariable myvariable;
}

public struct MyVariable
{
    public struct National
    {
        public int Past { get; set; }
        public int Present { get; set; }
        public int Future { get; set; }
    }
    ...
}

现在,当我示例化类并访问成员(myclass.myvariable.national.past)时,它不会获取成员。

kb5ga3dv

kb5ga3dv1#

这里有一组简单的类来完成这个任务。我使用类而不是结构,因为如果你使用结构,你需要理解一些“陷阱”。

除非也许如果你描述“它不工作”,我打赌你的问题实际上是你试图使用结构体。

public class Foo<T>
{
    public T Future;
    public T Present;
    public T Past;
}

public class Bar
{
    public Foo<string> City;
    public Foo<string> State;
    public Foo<string> Country;
}

public class Top
{
    public Bar v0;
    public Bar v1;
    //...
    public Bar v2;
}
3gtaxfhh

3gtaxfhh2#

结构MyVaribale下缺少初始化。

    • 国家公共部门;**
internal class Program
{
    static void Main(string[] args)
    {
        var myVar = new MyClass();
        myVar.myvariable.national.Past = 1;
    }
}

public class MyClass
{
    public MyVariable myvariable;
}

public struct MyVariable
{
    public National national; // This line is missing. That's why you can't access the members of the 'National' struct.

    public struct National
    {
        public int Past;
        public int Present;
        public int Future;
    }

}
falq053o

falq053o3#

下面是这个问题的答案:

public struct PeriodVars
{
    public int Past { get; set; }
    public int Present { get; set; }
    public int Future { get; set; }
}

public struct VarStruct
{
    public PeriodVars City;
    public PeriodVars County;
    public PeriodVars State;
}

现在的课程是:

public class MyClass
{
    public VarStruct v0;
    public VarStruct v1;
    ...
}

一旦我示例化了类的一个对象,我就可以像这样引用它:

objMyClass.v0.City.Past = 111;
nnt7mjpx

nnt7mjpx4#

根据您的注解,您似乎混合了类型和示例:
假设您的MyVariable如下所示:

public struct MyVariable
{
    public struct National
    {
        public int Past;
    }

    public National ValueForNational;
}

myclass.myvariable.National-它是一个类型(不会编译)
myclass.myvariable.National.Past-它是类型的成员(将不编译)
myclass.myvariable.ValueForNational-是MyClass变量内MyVariable成员的值(将编译)
myclass.myvariable.ValueForNational.Past-是你可能想要的一个...

相关问题