求好心人耐心一下
谢谢
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了啊
却没有得到显示赋值啊这样就形成了矛盾啊 真不知改如何理解这个警告了
谢谢
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了啊
却没有得到显示赋值啊这样就形成了矛盾啊 真不知改如何理解这个警告了
结构具有以下特点:结构是值类型,而类是引用类型。向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。与类不同,结构的实例化可以不使用 new 运算符。结构可以声明构造函数,但它们必须带参数。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。结构可以实现接口。在结构中初始化实例字段是错误的。
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);
}
}
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);
}
}
没有用你自己的话解释我的问题
msdn谁找不到
请不要混分