真想念老一辈的MVP在的时候的C#论坛啊...>>1、可以被创建在堆或堆栈上; 对头. 但是有些不一样.比如两个结构a,b, a=b以后是拷贝了两段内存,而类的对象a,b, a=b 只是一段. >>2、元素地默认访问为私有的; 对头 >>3、元素有默认值; 都没有.(也可能我们说的不是一个东西,你再详细说说).>>4、均可以定义方法; 对头.>>5、均可以包含构造函数和析构函数。 结构有构造函数,但是不能是没有任何参数的构造函数.(下面的代码出错) public struct A { public int a; public int b; A() { a = 0; b = 0; } }结构不能有析构函数。(下面的代码出错) public struct A { public int a; public int b; public A(int aa, int bb) { a = 0; b = 0; } public ~A() { } }最后,我补充一些我知道的东西. 1.结构不支持继承. 2.对于大的结构体,在作为参数传递时,如果(不是必须)能使用ref,尽量使用,因为这样传递过去的是地址,而不是一个拷贝.但是这是就可以改变结构体的值了. 3,结构体一个非常由于的地方,就是在和(unsafe)代码交互时.它指定字段在内存中的分布,你可以参考StructLayout的一些帮助.To :shems(流氓猪) 4.>>听说在Java里面没有结构,不知是不是真的. 是真的.Java中是通过类和接口来实现的. 5.>>如果是真的话,为什么C#还会保留结构呢? 可能和上面的3有关吧.
类和结构几乎没有什么不同,根本的差别只在于类是引用类型,结构是值类型。
引用类型和值类型的区别,相信不用我说了吧。呵呵……
不过在C#里我几乎没用过结构,全部都用类,结构要说有优点的话,可能就是性能上的吧。
听说在Java里面没有结构,不知是不是真的。如果是真的话,为什么C#还会保留结构呢?只是因为要继承C、C++吗?
如果我有什么说错了,请大家指正。我很菜的说。
对头. 但是有些不一样.比如两个结构a,b, a=b以后是拷贝了两段内存,而类的对象a,b, a=b 只是一段.
>>2、元素地默认访问为私有的;
对头
>>3、元素有默认值;
都没有.(也可能我们说的不是一个东西,你再详细说说).>>4、均可以定义方法;
对头.>>5、均可以包含构造函数和析构函数。
结构有构造函数,但是不能是没有任何参数的构造函数.(下面的代码出错)
public struct A
{
public int a;
public int b;
A()
{
a = 0;
b = 0;
}
}结构不能有析构函数。(下面的代码出错)
public struct A
{
public int a;
public int b;
public A(int aa, int bb)
{
a = 0;
b = 0;
} public ~A()
{
}
}最后,我补充一些我知道的东西.
1.结构不支持继承.
2.对于大的结构体,在作为参数传递时,如果(不是必须)能使用ref,尽量使用,因为这样传递过去的是地址,而不是一个拷贝.但是这是就可以改变结构体的值了.
3,结构体一个非常由于的地方,就是在和(unsafe)代码交互时.它指定字段在内存中的分布,你可以参考StructLayout的一些帮助.To :shems(流氓猪)
4.>>听说在Java里面没有结构,不知是不是真的.
是真的.Java中是通过类和接口来实现的.
5.>>如果是真的话,为什么C#还会保留结构呢?
可能和上面的3有关吧.
yarshray、TheAres各得10分。
再次致谢!