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; set; }

        public PointClass(int x, int y)
        {
        }
    }

  首先,声明所使用的关键字: 使用 struct 声明结构,使用 class 声明类。

  其次,默认的访问权限:   结构的默认访问权限是 public,而类的默认访问权限是 private。

  然后,声明的变量的初始值: 在类里面声明变量可以给初始值,但在结构体中声明的变量是不可以赋初始值的。

  最后,构造函数:      结构体不能显式定义无参数的构造函数,并且结构体中的构造函数中必须给该结构体的所有字段赋值;但是类的构造函数中可以不给字段赋值。

二、存储及赋值

  结构是值类型,存储在堆栈空间内,其对象的字段值是直接存储在这个变量中的。(堆栈的空间有限,但处理效率要比堆的执行效率高)

原文地址:https://www.cnblogs.com/zhangchaoran/p/10336937.html

时间: 2024-10-16 13:44:39

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

结构和类的区别

本文转自: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? //在栈开辟空间 结

结构与类的区别

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

.NET中结构与类的区别

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

[转]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.虽然结构与类的类型不一