结构和类的区别

问题描述

结构是值类型,类是引用类型结构不能从另外一个结构或者类继承,本身也不能被继承,类完全可扩展的,除非显示的声明sealed否则类可以继承其他类和接口,自身也能被继承。结构里没有方法,只有属性成员,二者均可实现接口

解决方案

解决方案二:
结构没有默认的构造函数,但是可以添加构造函数没有析构函数没有abstract和sealed(因为不能继承)不能有protected修饰符可以不使用new初始化在结构中初始化实例字段是错误的类有默认的构造函数有析构函数可以使用abstract和sealed有protected修饰符必须使用new初始化
解决方案三:
LZ,你已经回答了你本身的问题了。
解决方案四:
小技巧:教您如何更快获得可用分
解决方案五:
结构有方法DateTime里那么多货呢
解决方案六:
刚开始没发现类比结构的优势,。。。越后来越发现结构在很多方面是代替不了类的,。。原因见楼主帖子内容
解决方案七:
LZ在传道授业解惑也。另外我补充一些struct和class的其他区别和特殊点:1,枚举本质是结构体2,sizeof一般能获取struct大小而类不行3,struct一定不会作为gc的根,而class可能4,struct隐式派生于valuetype后者继承自Object5,struct很多时候会内存布局影响大小,而class不会6,可空类型是struct类型
解决方案八:
补充一点。struct默认的是public。类的默认的是private,

时间: 2025-01-31 09:30:02

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

C#学习之结构与类的区别

区别 最近有看到网上面试题提到结构鱼类的区别,遂查看了msdn以及一些网上的资料总结了一下,一做学习之用 C#学习之结构与类的区别数据结构和类实际上都是创建对象的模版,每个对象都包含数据,并提供了处理和访问数据的方法.在语法上,非常相似,主要是使用关键字的区别.对于类和结构,都是使用关键字new来声明实例:这个关键字对象创建对象,并对其进行初始化. 1.值类型和引用类型结构是指类型,指类型在堆栈(栈)上分配地址,C#中的所有基类型都是结构类型(例如:int对应System.Int32结构):类是

c#中结构与类的区别

区别 目录  类与结构的实例比较    类与结构的差别    如何选择结构还是类  一.类与结构的示例比较: 结构示例: public struct Person {    string Name;    int  height;    int  weight public bool overWeight() {     //implement something } }   类示例:    public class TestTime    {  int hours;  int minutes;

C#.NET中关于结构与类之间的区别

目录  类与结构的实例比较 类与结构的差别 如何选择结构还是类 一.类与结构的示例比较: 结构示例: publicstructPerson {  stringName;  intheight;  intweight;  publicbooloverWeight()  {   //implementsomething  } } 类示例: publicclassTestTime {  inthours;  intminutes;  intseconds;  publicvoidpasstime()

[C#]图说结构体和类的区别

你真的能准确说出结构体和类的区别嘛,不妨先试试下面几道题,看你答案是否准确: 1. 2. 3. 4. 不看答案之前,自己先说一下答案,然后下面再公布答案,如果你能准确说出正确答案,那么说明你对结构体和类就很了解: 先看看stackoverflow是怎么解释结构体和类是怎么选择的: 下面公布以上题目答案,你猜对了吗? 1. 2. 3. 4.

图解css3:核心技术与案例实战. 2.8 结构伪类选择器

2.8 结构伪类选择器 伪类可以将一段并不存在的HTML当作独立元素来定位,或是找到无法使用其他简单选择器就能定位到的切实存在的元素.因此CSS3给伪类选择器引入一种"结构伪类选择器".这种选择器可以根据元素在文档树中的某些特性(如相对位置)定位到它们.也就是说,通过文档树结构的相互关系来匹配特定的元素,从而减少HTML文档对ID或类名的定义,帮助你保持代码干净和整洁. 2.8.1 重温HTML的DOM树 所有的结构伪类都是基于HTML文档树的,也称做文档对象模型(DOM),下面简单回

结构和类

在C++中,结构和类很相似,结构的成员默认为公共类型,而类的成员默认为私有类型.而在C#中,它们是完全不同的类型: 1:类型: 结构是值类型,在堆栈上分配地址,所以结构之间的赋值可以创建新的结构:而类是引用类型,在堆上分配地址,所以类之间的赋值只是复制引用.堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象,所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑. 2:继承性: 结构不能被继承,除了它们都是由System.Valuetype派生而来.可是结构能够

C++语言学习之从结构到类

编程之前,有必要复习一下C++中面向对象的一些基本概念.我们知道,C++与C相比有许多优点,主要体现在封装性(Encapsulation).继承性(Inheritance)和多态性(Polymorphism).封装性把数据与操作数据的函数组织在一起,不仅使程序结构更加紧凑,并且提高了类内部数据的安全性;继承性增加了软件的可扩充性及代码重用性;多态性使设计人员在设计程序时可以对问题进行更好的抽象,有利于代码的维护和可重用.Visual C++不仅仅是一个编译器,更是一个全面的应用程序开发环境,读者

C# 接口 与 类的 区别

问题描述 C# 接口 与 类的 区别 C# 接口与类的作用的区别,什么时候该用接口,什么时候改用类.比如,不用知道具体的子类是什么,调用通用的接口,这个用基类实现也行,用接口实现也行.PS:这里不用讨论基本概念,想从最能突出各自作用的一些点做更深刻的说明. 解决方案 C#不允许多继承,比如asp.net的page,winforms里的control form,已经有一个基类了,就不能再继承一个抽象类,只能使用接口. 接口不能包含代码实现.私有字段,它提供了方法的约定,用来规范相同或者相似功能的一

跪求C#下如何实现自定义结构或类与BYTE数组之间的相互转换(即数据的打包与解包)?

问题描述 请教C#下如何实现自定义结构或类与BYTE数组之间的相互转换(即数据的打包与解包)?在C#定义类似如下的结构和类:[Serializable][StructLayout(LayoutKind.Sequential,Pack=1)]publicstructSTCord{publicdoublex;//publicdoubley;publicbytetype;publicintnum;};[Serializable][StructLayout(LayoutKind.Sequential,P