【问题标题】:nested struct as members in a class嵌套结构作为类中的成员
【发布时间】:2012-07-12 20:27:34
【问题描述】:

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

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

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

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

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

谢谢。

更新:

这里是sn-p的代码:

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

【问题讨论】:

  • “它不工作”是什么意思?
  • 听起来应该是一个类,也许你可以发布一些代码,这样我们就可以看看是什么不起作用并能够提供帮助。
  • 听着,如果你不能理解这个问题,即使它得到了回答,你也不必不断地对它投反对票。这太荒谬了。

标签: c# .net class struct


【解决方案1】:

下面是这个问题的答案:

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 秒内就开始投反对票。 p>

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案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;
      }
      

      【讨论】:

      • 您能否发布“现在当我实例化类并访问成员 (myclass.myvariable.National.Past) 时,它没有获取成员。”的代码。
      • 我这样做是这样的:MyClass myclass= new MyClass();
      • 如果这是您的全部代码,那么您除了实例化类之外什么也没做。你是如何设置这些值的?您如何检索这些值?你在看什么?你期待看到什么?我们不是通灵者。
      【解决方案4】:

      struct MyVaribale 下缺少初始化

      public National National;

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-13
        • 1970-01-01
        • 2021-07-15
        相关资源
        最近更新 更多