繁体   English   中英

嵌套结构作为类中的成员

[英]nested struct as members in a class

我正在编写一个包含 90 个整数变量的类。 基本上有 10 个,但每个都有 3x3 属性,使它们成为 90 个。我将进一步解释。

所以我拥有的 10 个变量是:v0、v1、v2、...、v9。 其中每一个都有 3 个不同的城市、县和州值。 此外,它们中的每一个都有过去、现在和未来的 3 个不同的值。

因此,典型值为:v3.City.Future 或 v7.State.Past 或 v8.County.Present。

我正在考虑实现一个类,每个变量有 10 个结构,然后每个结构都有 3 个嵌套结构(用于城市、县和州),每个结构都有 3 个用于过去、现在和未来的整数变量。

这仍处于概念阶段。 我尝试采用上述方法,但它不起作用。 请随时提出任何建议。

谢谢。

更新:

这是代码片段:

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)时,它没有获取成员。

这是答案:

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;

除了批评之外,我在这里发布的帮助并不多。

通常,一个人无法理解被视为另一个人无法解释。 我花了15-20分钟写出问题,人们在不到30秒的时间内开始投票。

你的“问题”根本不是一个问题,但这里有一套简单的类来完成。 我使用类而不是结构,因为如果你使用结构,你需要了解一些“陷阱”。

除非您描述“它不起作用”, 否则我打赌您的问题实际上是您正在尝试使用结构。

请发布您的代码,并描述您的症状,以便我们更好地帮助您。

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;
}

看起来您正在根据您的评论混合类型和实例:

假设您的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 - 你可能想要的......

struct 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 thats why You cant access the members of National struct.

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM