结构与类的区别

1、结构中可以声明字段,但是不能够给字段初始值


public struct Point
{
private int x;
x = 1; //错误 1 类、结构或接口成员声明中的标记“=”无效
public Point(int x)
{
this.x = x;
}
}

在类中声明一个字段之后也是不能够为其赋值的


public class RefPoint
{
private int x { set; get; }
public int y;
y = 12;//错误 1 类、结构或接口成员声明中的标记“=”无效
public RefPoint(int x)
{
this.x = x;
}
}

但是可以再声明字段的同时给他赋值


public class RefPoint
{
private int x { set; get; }
public int y = 12;
public RefPoint(int x)
{
this.x = x;
}
}

C#编译器在编译的时候,如果我们声明字段的时候为字段赋值,那么为字段赋值的代码C#编译器在编译的时候会将赋值的代码放到构造函数中去,其实严格意义上来说,类的字段也是不能有初始值的.只不过微软在背后帮我们做了点事情,我们不知道而已.

2、构造函数

结构不能手动添加无参数构造器

结构体的构造函数必须为所有的字段赋值

3、结构体不能从另外一个结构或者类继承(它隐士继承了valuetype类型),但是可以实现接口

4、结构是值类型,而类是引用类型

5、结构类型不能使用 == 进行比较,会报错

时间: 2024-11-10 11:20:12

结构与类的区别的相关文章

结构和类的区别

本文转自:http://blog.csdn.net/lianchangshuai/article/details/5810249 1.结构用于小的数据类型,所有结构派生自System.ValueType类,不能再继承其它基类,同时也不能被继承. 而类一般用于大的数据类型如人类,动物类等,支持继承. 2.结构和类一样可以有成员方法,字段.3.结构中的成员字段不能被显式初始化,要通过默认无参构造器初始化,而类的字段可以显示初始化,默认由无参构造器初始化. 4.结构的无参构造器总是存在,无论是否手动添

C#中结构与类的区别

一.类与结构的示例比较: 结构示例: 1 public struct Person 2 { 3 string Name; 4 int height; 5 int weight 6 public bool overWeight() 7 { 8 //implement something 9 } 10 } 类示例: 1 public class TestTime 2 { 3 int hours; 4 int minutes; 5 int seconds; 6 7 public void passti

结构和类的区别及结构的使用

类和结构是 .NET Framework 中的常规类型系统的两种基本构造. 两者在本质上都属于数据结构.封装着一组总体作为一个逻辑单位的数据和行为. 数据和行为是该类或结构的"成员",它们包括各自的方法.属性和事件等 与类不同的是,结构体用struct 修饰:结构体中的实例字段不能自定义默认值,而类可以,编译器会隐式的给出结构体和类的默认构造函数,但是结构体的默认构造不能显示给出,不然编译器会报错,当类有自定义的构造函数时,默认构造会被隐藏,要想使用默认构造,必须显示给出:结构体的自定

C++中结构和类的区别

首先从从语言角度来看,c语言是一种结构化的语言,便于按照模块化的方式来组织程序,易于程序员的调试和维护,而对于c++来说,我么可以认为它是标准c的超集.实际上所有的c程序也是c++程序.但两者之间还是有少量的区别. 区别: 结构是C语言中的一种数据的组合的形式,c++从c中继承了结构.在语法上,类与结构类似.在关系上,两者也是很接近的.在c++中,结构的作用被拓宽了.在一定的程度上结构成了一种类的代替方法.实际上,类与结构的唯一却别就是在默认状态下,结构的所有成员均是公有的.而类的所有成员是私有

.net(C#)中结构和类的区别

static void Main(string[] args) { //类型 //结构:值类型 //类:引用类型 //声明的语法:class struct //在类中,构造函数里,既可以给字段赋值,也可以给属性赋值.构造函数是可以重载的 //但是,在结构的构造函数当中,必须只能给字段赋值. //在结构的构造函数当中,我们需要给全部的字段赋值,而不能去选择的给字段赋值 //调用: PersonClass pc = new PersonClass(); //结构是否可以New? //在栈开辟空间 结

.NET中结构与类的区别

.NET中的类型有5中:类.结构.枚举.接口和委托.而类和结构有着很大的相似性,都可以拥有向字段.方法这样的成员. 但是,类和结构还是有很多不同的. 1)结构是 值类型,而类确是引用类型的. 2)结构不支持继承. 3)因为结构是 值类型的,所以两个变量不能指向同一结构实例. 4)引用类型可以为空(null),但却不能给值类型赋值为空,会导致编译出错 例如 System.DataTime是一个结构,以下是错误的 System.dataTime today = null;     //Wrong 为

C# 结构与类的区别

一.定义方式 定义结构: struct PointStruct //默认的访问权限是 public { public int X { get; set; } public int Y { get; set; } public PointClass(int x, int y) { X = x; Y = y; } } 定义类: class PointClass //默认的访问权限是 private { public int X { get; set; } public int Y { get; se

[转]C#中的结构体与类的区别

C#中的结构体与类的区别 经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字struct.在语法上其实类和结构有着很多相似的地方. 定义类的语法 1 class Person 2 { 3 private string name; 4 private int age; 5 6 public void SayHi() 7 { 8 Console.WriteL

C#结构体和类的区别

结构体和类的区别 1. 值类型与引用类型 结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,通过使用结构可以创建更多的值类型 类是引用类型:引用类型在堆上分配地址 堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象.所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑 因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用 注:   a.虽然结构与类的类型不一