.NET中结构与类的区别

.NET中的类型有5中:类、结构、枚举、接口和委托。而类和结构有着很大的相似性,都可以拥有向字段、方法这样的成员。

但是,类和结构还是有很多不同的。

1)结构是 值类型,而类确是引用类型的。

2)结构不支持继承。

3)因为结构是 值类型的,所以两个变量不能指向同一结构实例。

4)引用类型可以为空(null),但却不能给值类型赋值为空,会导致编译出错

例如 System.DataTime是一个结构,以下是错误的

System.dataTime today = null;     //Wrong

为了规避这个问题,.NET Framework提供了System.Nunllable结构来使任意结构可以为空,               简单的写法为:   System.dataTime? today = null;

int? x = null;  //x是nullable

还有一个小问题我之前没听过,就是程序集的概念

【我们可以在System.Numerics.dll程序集中找到System.Numerics命名空间,要使用其成员,我们需要现在项目中增加对这个程序集的引用】   Project->Add Reference选中想引用组件类型的标签页

时间: 2024-12-28 10:31:30

.NET中结构与类的区别的相关文章

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

C++中结构和类的区别

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

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

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

结构和类的区别

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

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

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

结构与类的区别

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 类.结构或接口成员

C#中结构与类VS结构

C# 结构的特点 您已经用了一个简单的名为 Books 的结构.在 C# 中的结构与传统的 C 或 C++ 中的结构不同.C# 中的结构有以下特点: 结构可带有方法.字段.索引.属性.运算符方法和事件. 结构可定义构造函数,但不能定义析构函数.但是,您不能为结构定义默认的构造函数.默认的构造函数是自动定义的,且不能被改变. 与类不同,结构不能继承其他的结构或类. 结构不能作为其他结构或类的基础结构. 结构可实现一个或多个接口. 结构成员不能指定为 abstract.virtual 或 prote

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

CSS3中结构伪类选择器——root、not、empty、target选择器

1.root选择器 将样式绑定到页面的根元素中.根元素是指位于文档树中最顶层结构的元素,在HTML页面中就是指包含整个页面的<html>部分. <style type="text/css"> :root{ background:yellow; } body{ background:green; } </style> 注意:不使用root选择器来指定root元素的背景色,只指定body元素的背景色,则整个页面就全部变成了绿色. 2.not选择器 如果想