• 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#的结构和类等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

       类和结构是.NET Framework中的同样类型系统的两种基本构造。两者在本质上都属于数据结构,封装这一组整体作为一个逻辑单位的数据和行为。数据和行为是该类或结构的“成员”,它们包含着各自的方法,属性和事件等。
       结构
       结构是C#程序员用来定义自己的值类型的最普遍的机制。结构比枚举更强大,因为它提供方法,字段,操作符和访问控制等。
       结构与类很相似,都表示可以包含数据成员和函数成员的数据结构。但是,与类不同,结构是一种值类型,并且不需要堆分配。结构类型的变量直接包含了该结构的数据,而类类型的变量所包含的只是对相应数据的一个引用(被引用的数据称为“对象”)。
        结构对于具有值语义的小型数据结构尤为有用。复数,坐标系中的点或字典中的“键-值”对都是结构的典型示例。这些数据结构的关键之处在于:他们只是少量数据成员,不要求使用继承或引用标识,而且它们使用较方便(赋值时直接复制值而不是复制它的引用)。
        结构的声明通过关键字struct来实现,声明格式为:
        修饰符   struct   结构名
         {
                 结构主体
          };
         结构声明包含一组可选额特性,后跟一组可选的结构修饰符,再跟关键字struct和一个用于命名结构的标识符,然后跟一个可选的结构接口规范,最后跟一个结构主体,根据需要后面还可以跟一个分号。
        结构声明可以根据需要包含一个结构修饰符:new,public,protected,internal,private
        结构的使用
        为结构定义默认(无参数)构造函数是错误的,在结构体重初始化实例字段也是错误的。初始化结构成员可通过两种形式来完成:一是使用参数化构造函数,二是在声明结构后分别访问成员。对于任何私有成员或以其他方式设置为不可访问的成员,只能在构造函数中进行初始化。
        如果使用new运算符创建结构对象,则会创建该结构对象,并调用适当的构造函数。与类不同的是,结构的实例化可以不使用new运算符。在此情况下不存在构造函数的调用,因而可以提高分配效率。但是,在初始化所有字段之前,字段将保持未赋值状态且对象不可用。
        当结构包含引用类型作为成员时,必须显式调用调用该成员的默认构造函数,否则该成员将保持未赋值状态且该结构不可用。
例题,创建一个结构,分析结构的使用

<span style="font-size:18px;">using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
 
namespace Text 
{ 
 struct Sum//定义的一个结构 
 { 
  public int sum(int a, int b)//结构包含的方法 
  { 
   return a + b; 
  } 
 } 
 class Program 
 { 
  static void Main(string[] args) 
  { 
   int p = 10; 
   int q = 10; 
   Sum t = new Sum();//创建结构对象t 
   Console.Write("{0}+{1}=",p,q); 
   Console.Write(t.sum(p,q));//调用结构中的方法 
   Console.ReadLine(); 
  } 
 } 
} 
</span> 
</div>

输出的结果为:10+10=20
        类
        类是一种数据结构,它可以封装数据成员(常量和字段),函数成员(方法,属性,事件,索引器,运算符,实例构造函数,静态构造函数和析构函数)和其他的类(嵌套类型)。类是创建对象的模板。C#的一切类型都是类,所有的语句都必须位于类内,不存在任何处于类外的语句。因此,类是C#语言的核心和基本构成模块。类类型支持继承,继承是一种机制,可使派生类对基类进行扩展和专用化。
        类声明中指定的基类可以是构造类类型。基类本身不能是类型形参,但在其作用域中可以包含类型形参。
        在OOP方法中,类是对现实世界的一种高度抽象与概括,而对象则是类的一个实例,对象一定具有其属类的共同特征与行为规则,当然一个对象还可以具有其属类未曾规定的特征和行为规则。这一点和现实生活是相同的,这样的模拟和抽象比较符合人们的思维习惯,这也正是OOP方法具有强大生命力,能够获得越来越多的软件工作者欢迎并得到众多计算机开发商支持的一个基本原因。
       总之,从程序设计者的角度观察,类是一个数据模式和若干个程序过程,经封装而形成的一个整体,是使用信息技术对现实世界的一种模拟与抽象。而对象则是类的一个实例,从程序设计语言来说,对象可以被理解为一个类赋值的结果。对象是OOP方法中组成程序的一种构件。
       C#中类的声明是通过class关键字实例的,格式为:
       修饰符   class 类名: 基类或接口
        {
             类体
        }
        其中“修饰符”,": 基类或接口"为可选项。类的修饰符可以是以下几种之一或者它们的组合(在类的声明()中同一修饰符不允许出现多次)。
       (1)new:仅允许在嵌套类声明时使用,表明类中隐藏了由基类中继承而来的,与基类中同名的成员
       (2)public:表示不限制对该类的访问
       (3)internal:只有其所在类才能访问
       (4)private:只有对.NET中的应用程序或库才能访问
       (5)abstract:抽象类,不允许建立类的实例
       (6)sealed:密封类,不允许被继承
使用new关键字可以建立类的一个实例:

<span style="font-size:18px;"> class A 
 { 
 } 
 class B 
 { 
  void M() 
  { 
   A a = new A(); 
  } 
 }</span> 
   
</div>

类的继承声明:C#语言中只支持单继承

<span style="font-size:18px;"> class A 
 { 
 } 
 class B : A 
 { 
 }</span>
</div>

(1)、构造函数和析构函数
         C#提供了更好的机制来增强程序的安全性。C#编译器具有严格的类型安全检查功能,它几乎能找出程序中所有的语法问题。但是,程序通过了编译检查并不表示错误已经不存在了。
        C#语言充分考虑了程序错误的出现并很好的予以解决,即把对象的初始化工作放在构造函数中,把清除工作放在析构函数中。当对象被创建时,构造函数被自动执行。当对象消亡时,析构函数自动执行。
        构造函数的名字不能随便起,必须让编译器认得出才可以被自动执行。它的命名方法既简单又合理:让构造函数与类名相同。除了名字之外,构造函数的另一个特别之处是没有返回值类型,这是与返回值类型为void的函数不同。
        析构函数是实现销毁一个类的实例的方法成员。析构函数不能有参数,不能有任何修饰符而且不能被调用。析构函数与构造函数目的不同,特在析构函数前加前缀”~“以示区别。
        构造函数和析构函数虽然是一个类中形式上较简单的函数。但它们的使用决非看上去那么简单,因此灵活而正确地使用构造函数和析构函数能够帮助用户更好的理解CLR的内存管理机制以及更好的管理系统中的资源。
(2)、类与对象
       
类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,

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

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

相关文章

  • 2017-05-28解析c#在未出现异常情况下查看当前调用堆栈的解决方法
  • 2017-05-28C#全角半角转换函数代码分享
  • 2017-05-28解读在C#中winform程序响应键盘事件的详解
  • 2017-05-28c#异常处理示例分享
  • 2017-05-28C#发送数据到剪贴板及从剪贴板中取数据的方法
  • 2017-05-28C#子线程执行完后通知主线程的方法
  • 2017-05-28c#调用arcgis地图rest服务示例详解(arcgis地图输出)
  • 2017-05-28HighCharts图表控件在ASP.NET WebForm中的使用总结(全)
  • 2017-05-28C#基础 延迟加载介绍与实例
  • 2017-05-28C# 3DES加密详解

文章分类

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

最近更新的内容

    • C#实现ComboBox自动匹配字符
    • C#函数式编程中的缓存技术详解
    • DirectoryEntry配置IIS7出现ADSI Error:未知错误(0x80005000)
    • C#基于正则表达式实现获取网页中所有信息的网页抓取类实例
    • C# WinForm开发中使用XML配置文件实例
    • c#循环中产生伪随机数
    • C#简单查询SQLite数据库是否存在数据的方法
    • 在Parallel中使用DbSet.Add()发现的一系列多线程问题和解决思路详解
    • C#打印类PrintDocument、PrintDialog、PrintPreviewDialog使用示例
    • c# Form中的键盘响应具体实现思路

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

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