日期:2014-05-18  浏览次数:20843 次

C# 结构数组的问题
我用C#编程定义了一个结构体数组。
首先,声明了一个全局结构体数组
  public struct zgzhe //定义钻杆组合结构体
  {
  public static float zgds; //钻杆顶深
  public static float zgdis; //钻杆底深
  public static float zgnjj; //钻杆内径
  public static float zgwjj; //钻杆外径
  public static float zjdgc; //钻具单根长度
  public static float jtwj; //接头外径
  public static float jtcd; //接头长度
   
  }
  在后面的设计中重新声明了一个结构体数组zgzhe1,
  zgzhe[] zgzh1 =new zgzhe[10]; 

  然后我想给这个结构体数组赋值,按照正常的套路应该是这样的  
  int i;
  for(i=0;i<10;i++)  
  {
  zgzh1[0].zgds=xx;
  zgzh1[0].zgdis=xx;
  zgzh1[0].zgnjj=xx;
  zgzh1[0].zgwjj=xx;
  zgzh1[0].zjdgc=xx;
  zgzh1[0].jtwj=xx;
  zgzh1[0].jtcd=xx;
  }  
  可是,实际的情况是,我的定义没有问题,然后当我想赋值的时候我的调用就出问题了
  我输入:
  zgzh1[0].这个.之后根本没有弹出我希望的结构体里的元素。而是只有四个选项,分别是:Equals,Gethashcode, Gettype和TOstring,始终是无法赋值结构体元素,我用的是VS2010,是我哪里的定义出问题了,还是开始的时候需要声明什么呢?求各位达人详解,我都困惑了一个月了。

------解决方案--------------------
C#定义结构体成员必须加 public static 吗,什么作用?
int i;
for(i=0;i<10;i++)
{
zgzh1[0].zgds=xx;
zgzh1[0].zgdis=xx;
zgzh1[0].zgnjj=xx;
zgzh1[0].zgwjj=xx;
zgzh1[0].zjdgc=xx;
zgzh1[0].jtwj=xx;
zgzh1[0].jtcd=xx;
}
应该是
int i;
for(i=0;i<10;i++)
{
zgzh1[i].zgds=xx;
zgzh1[i].zgdis=xx;
zgzh1[i].zgnjj=xx;
zgzh1[i].zgwjj=xx;
zgzh1[i].zjdgc=xx;
zgzh1[i].jtwj=xx;
zgzh1[i].jtcd=xx;
} 吧 

------解决方案--------------------
你的是static变量,当然弹不出来,楼主设计成static的初衷是什么?
------解决方案--------------------
你结构体中都是静态变量,当然不能通过 实例 的方式访问了
------解决方案--------------------
问题就是static,去掉就可以了。