• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > c#结构和类的相关介绍

c#结构和类的相关介绍

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#结构和类的区别,c#结构体和类的区别,c#结构和类,c#中结构和类的区别,c#中类和结构体的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

我们不关心对象内部是怎么实现的,我们关心的是他提供给我什么接口,有什么操作。从技术上来说,结构属于值类型,而类属于引用类型。结构不能指定继承基类类型,类可以。不过结构和类都能实现接口。
一、应用场合
结构的应用场合:

一、自定义数据类型,数据成员是公开的,提供工具函数。

二、抽象的数据类型,数据成员是密封的,提供相关的数据操作函数。

总之,都是围绕数据作文章。

类的应用场合:

一、提供一组类,形成一个有机整体,形成一个系统,类数据成员是密封的,只提供相互通信的函数接口。

类主要通过不同的类组成一个类间通信的系统。而类自身是整个系统的一部分。

二、成员和可访问性
作为抽象数据类型的工具,类和结构提供了丰富的封装功能。

1.字段定义数据成员,无封装

2.属性封装字段的访问方式

3.函数提供可用操作

4.事件提供了处理消息的模型

5.索引器封装了数据集合

另外

构造函数、析构函数负责初始化和清理垃圾(在c#中需要使用IDispose模式)

对于成员,可以有三大类,1、类成员,所有实例共享;(static 修饰)2、对象公开成员;(public 修饰)3、对象私有成员。其中公开成员是最重要的,私有成员属于内部实现细节。

公开成员是对象的特征,因为对于使用者来说,只能通过公开成员和对象进行互动。可以通过提取公开成员,形成一个独立接口,用来隔离具体的实现。这样,设计者便可以提供不同的类实现给客户。

三、泛型和接口
类和结构的共同点都是属于实现,而接口属于规范,客户端应该避免直接接触具体的实现,否则客户端就需要根据实现的变化而变化,这明显是不经济的。但是类和结构又有差别,类侧重行为,因此和接口更加搭配;而结构侧重数据,而接口是没有数据的,并且接口属于引用类型,当结构作为值类型转化成接口,就会产生装箱,会有性能问题。因此,接口一般不会配合结构来使用,而结构应该作为更加单纯的数据单元,不应该添加太多功能性。如果需要设计功能丰富的组件,最好是基于类来实作。当结构作为数据单元,它要修改设计的余地很少,因为数据单元的应用场合更多是被其他人修改,不具太多自主性。结论是结构自身便可以作为规范。

泛型是未完成的类型,因此提供了客户端自定义类型的机会。泛型的每一个实例,都共享相同或者类似的代码,那么客户端需要泛型的理由是什么?

c#是强类型的系统,就算逻辑上一样,因为类型不同,在编译器看来都是完全不同的代码。当客户端需要为不同类型采取相同的逻辑的时候,泛型就提供了一个快捷的,越过强类型限制的渠道。比如有个int + int 和 float + float在我们人类看来几乎是一摸一样,但是强类型的编译器要求你重复书写代码,泛型能做到T + T,然后让客户端用可支持+操作的参数生成任何类型。

从客户端的角度,它不在乎实现是怎样的,它在乎的是接口是怎样的。泛型对客户端的意义在于强化了接口,从提供特定类型的接口到提供满足特定条件的一定范围内的类型的新型接口。这就让可用性大大增强。(按照实际应用情况,我们应该将泛型视为常态,单一类型的接口才是特殊态)。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c#结构和类的相关介绍

相关文章

  • 2017-05-28c#远程html数据抓取实例分享
  • 2017-05-28C#中重载相等(==)运算符示例
  • 2017-05-28简单的excel导入导出示例分享
  • 2017-05-28分享WCF文件传输实现方法---WCFFileTransfer
  • 2017-05-28C#把数组中的某个元素取出来放到第一个位置的实现方法
  • 2017-05-28c#操作sql server2008 的界面实例代码
  • 2017-05-28C#中深度复制和浅度复制详解
  • 2017-05-28解析美国东部时间与北京时间相互转换的实现代码
  • 2017-05-28C#控制台程序中处理2个关闭事件的代码实例
  • 2017-05-28C# 字符串多行显示/文本换行以textbox为例讲解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#堆排序实现方法
    • C# 文件操作函数 创建文件 判断存在
    • c#图片添加水印的实例代码
    • 深入Resource实现多语言支持的应用详解
    • WinForm单例窗体用法实例
    • C#实现解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市的方法
    • C#获取上个月第一天和最后一天日期的方法
    • C#冒泡法排序算法实例分析
    • DevExpress设置TreeList图片节点背景色的方法
    • Winform窗口实现多显示屏显示的2种方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有