求好心人耐心一下
谢谢
using  System;
namespace  csdn
{
   public  struct  ak47
     {
           public  int  a,b;
     }
   class  mp4
     {
           public  int  x,y;
           static  void  Main()
             {
                   ak47  oo=new  ak47();
                   mp4  pp=new  mp4();
                   Console.WriteLine("a={0},b={1}",oo.a,oo.b);
                   Console.WriteLine("x={0},y={1}",pp.x,pp.y);
             }
     }
}结果是
a=0,b=0
x=0,y=0问题是vs2003能通过编译但提示两个警告
c:\documents  and  settings\i\my  documents\visual  studio  projects\consoleapplication38\class1.cs(10,14):  warning  CS0649:  从未对字段“csdn.mp4.x”赋值,字段将一直保持其默认值  0
c:\documents  and  settings\i\my  documents\visual  studio  projects\consoleapplication38\class1.cs(10,16):  warning  CS0649:  从未对字段“csdn.mp4.y”赋值,字段将一直保持其默认值  0
******************************************************************************************问题是x,y都初始化了  为啥说它还没赋值  
可以理解为x,y虽然初始化为0了,但还没有得到显示赋给的值如果按这样理解的话  为什么结构ak47的a,b没有报警呢  它们也是被初始化0了啊
却没有得到显示赋值啊这样就形成了矛盾啊  真不知改如何理解这个警告了

解决方案 »

  1.   

    struct  结构概述
    结构具有以下特点:结构是值类型,而类是引用类型。向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。与类不同,结构的实例化可以不使用 new 运算符。结构可以声明构造函数,但它们必须带参数。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。结构可以实现接口。在结构中初始化实例字段是错误的。
      

  2.   

    结构中的字段可以声明为private, public, internal类型的,我们只能声明,不能在结构里面进行初始化,可以在构造器里进行赋值。下面是错误的
    struct MyStruct
    {
    int x = 20; // Error its not possible to initialize
    int y = 20; // Error its not possible to initialize
    }  
    正确的如下using System;
    struct MyStruct
    {
                public int x;
                public int y;
    }
    class MyClient
    {
                public static void Main()
                {
                            MyStruct ms = new MyStruct();
                            ms.x = 10;
                            ms.y = 20;
                            int sum = ms.x + ms.y;
                            Console.WriteLine("The sum is {0}",sum);
                }
    }
      
      

  3.   

    静态字段可以赋值如:
    using System;
    struct MyStruct
    {
                public static int x = 25;
                public static int y = 50;
    }
    class MyClient
    {
                public static void Main()
                {
                            int sum = MyStruct.x + MyStruct.y;
                            Console.WriteLine("The sum is {0}",sum);
                }

      

  4.   

    你发的都没有用
    没有用你自己的话解释我的问题
    msdn谁找不到
    请不要混分
      

  5.   

    你不是想知道为什么class里会提示,而struct里不提示么??因为struct根本不需要初始化,初始化则是错误的,而class需要,而你没有提供,所以提示错误。有什么不 明白的么?