4

我正在编写一个包含 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)时,它没有获取成员。

4

4 回答 4

18

这是这个问题的答案:

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 秒的时间内就开始对它投反对票。

于 2012-07-13T14:09:42.560 回答
4

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

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

于 2012-07-12T21:20:43.117 回答
3

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

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

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

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;
}
于 2012-07-12T20:37:10.563 回答
0

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;
        }
    
    }
于 2022-01-20T00:35:32.837 回答