2022年最新C#入门教程详解

虽然C#的构想十分接近于传统高级语言C和C++,是一门面向对象的编程语言,但是它与Java非常相似,有许多强大的编程功能,因此得到广大程序员的青睐。下面列出C#一些重要的功能:

在这一章中,我们将讨论创建C#编程所需的工具。我们已经提到C#是.Net框架的一部分,且用于编写.Net应用程序。因此,在讨论运行C#程序的可用工具之前,让我们先了解一下C#与.Net框架之间的关系。

.Net框架是一个创新的平台,能帮您编写出下面类型的应用程序:

.Net框架应用程序是多平台的应用程序。框架的设计方式使它适用于下列各种语言:C#、C++、VisualBasic、Jscript、COBOL等等。所有这些语言可以访问框架,彼此之间也可以互相交互。.Net框架由一个巨大的代码库组成,用于C#等客户端语言。下面列出一些.Net框架的组件:

如需了解每个组件的详细信息,请参阅微软(Microsoft)的文档。

微软(Microsoft)提供了下列用于C#编程的开发工具:

在我们学习C#编程语言的基础构件块之前,让我们先看一下C#的最小的程序结构,以便作为接下来章节的参考。

一个C#程序主要包括以下部分:

C#文件的后缀为.cs。以下创建一个HelloWorld.cs文件,文件包含了可以打印出“HelloWorld”的简单代码:

让我们来看看一个CarApplication(车)类的实现,并借此讨论C#的基本语法:

注释是用于解释代码。编译器会忽略注释的条目。在C#程序中,多行注释以/*开始,并以字符/终止,如下所示:/ThisprogramdemonstratesThebasicsyntaxofC#programmingLanguage*/

单行注释是用'//’符号表示。例如://endclassRectangle

变量是类的属性或数据成员,用于存储数据。在上面的程序中,Rectangle类有两个成员变量,名为length和width。

关键字是C#编译器预定义的保留字。这些关键字不能用作标识符,但是,如果您想使用这些关键字作为标识符,可以在关键字前面加上@字符作为前缀。在C#中,有些关键字在代码的上下文中有特殊的意义,如get和set,这些被称为上下文关键字(contextualkeywords)。

下表列出了C#中的保留关键字(ReservedKeywords)和上下文关键字(ContextualKeywords):

值类型变量可以直接分配给一个值。它们是从类System.ValueType中派生的。

下表列出了C#2010中可用的值类型:

如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用sizeof方法。表达式sizeof(type)产生以字节为单位存储对象或类型的存储尺寸。下面举例获取任何机器上int类型的存储尺寸:

对象(Object)类型是C#通用类型系统(CommonTypeSystem-CTS)中所有数据类型的终极基类。Object是System.Object类的别名。所以对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。

当一个值类型转换为对象类型时,则被称为装箱;另一方面,当一个对象类型转换为值类型时,则被称为拆箱。objectobj;obj=100;//这是装箱

动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。

字符串(String)类型允许您给变量分配任何字符串值。字符串(String)类型是System.String类的别名。它是从对象(Object)类型派生的。字符串(String)类型的值可以通过两种形式进行分配:引号和@引号。

类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在C#中,类型铸造有两种形式:

下面的实例显示了一个显式的类型转换:

一个变量只不过是一个供程序操作的存储区的名字。在C#中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。范围内的值可以存储在内存中,可以对变量进行一系列操作。我们已经讨论了各种数据类型。C#中提供的基本的值类型大致可以分为以下几类:

C#允许定义其他值类型的变量,比如enum,也允许定义引用类型变量,比如class。这些我们将在以后的章节中进行讨论。在本章节中,我们只研究基本变量类型。

C#中变量定义的语法:

;

在这里,data_type必须是一个有效的C#数据类型,可以是char、int、float、double或其他用户自定义的数据类型。variable_list可以由一个或多个用逗号分隔的标识符名称组成。

一些有效的变量定义如下所示:

inti,j,k;charc,ch;floatf,salary;doubled;

您可以在变量定义时进行初始化:

inti=100;

变量通过在等号后跟一个常量表达式进行初始化(赋值)。初始化的一般形式为:

常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。

常量可以被当作常规的变量,只是它们的值在定义后不能被修改。

整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x或0X表示十六进制,0表示八进制,没有前缀则表示十进制。整数常量也可以有后缀,可以是U和L的组合,其中,U和L分别表示unsigned和long。后缀可以是大写或者小写,多个后缀以任意顺序进行组合。

这里有一些整数常量的实例:212/*合法/215u/合法/0xFeeL/合法/078/非法:8不是一个八进制数字/032UU/非法:不能重复后缀*/

以下是各种类型的整数常量的实例:85/*十进制/0213/八进制/0x4b/十六进制/30/int/30u/无符号int/30l/long/30ul/无符号long*/

一个浮点常量是由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。这里有一些浮点常量的实例:

3.14159/*合法/314159E-5L/合法/510E/非法:不完全指数/210f/非法:没有小数或指数/.e55/非法:缺少整数或小数*/

使用浮点形式表示时,必须包含小数点、指数或同时包含两者。使用指数形式表示时,必须包含整数部分、小数部分或同时包含两者。有符号的指数是用e或E表示的。

字符常量是括在单引号里,例如,'x’,且可存储在一个简单的字符类型变量中。一个字符常量可以是一个普通字符(例如'x’)、一个转义序列(例如'\t’)或者一个通用字符(例如'\u02C0’)。

在C#中有一些特定的字符,当它们的前面带有反斜杠时有特殊的意义,可用于表示换行符(\n)或制表符tab(\t)。在这里,列出一些转义序列码:

字符串常量是括在双引号“”里,或者是括在@''里。字符串常量包含的字符与字符常量相似,可以是:普通字符、转义序列和通用字符使用字符串常量时,可以把一个很长的行拆成多个行,可以使用空格分隔各个部分。这里是一些字符串常量的实例。下面所列的各种形式表示相同的字符串。

算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符。

前提:假设如果A=60,且B=13,现在以二进制格式表示,它们如下所示:A=00111100B=00001101

实例:switch(Condition_Value){caseVal01://codingbreak;caseVal02://codingbreak;default://codingbreak;};|

使用运算符来简化if…else语句。

有时候,我们需要多次执行同一块代码。

图解:

循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。

要使用一个方法,您需要:

当调用带有参数的方法时,您需要向方法传递参数。在C#中,有三种向方法传递参数的方式:

单问号用于对int、double、bool等无法直接赋值为null的数据类型进行null的赋值,意思是这个数据类型是Nullable类型的。

inti=3;

等同于:

Nullablei=newNullable(3);

inti;//默认值0intii;//默认值null

双问号用于判断一个变量在为null的时候返回一个指定的值。接下来我们详细说明。

=null;

datatype[]arrayName;

datatype用于指定被存储在数组中的元素的类型。[]指定数组的维度。arrayName指定数组的名称。

实例:

**double[]balance=newdouble[10];**double[]balance={2340.0,4523.69,3421.0};int[]marks=newint[5]{99,98,92,97,95};

通过索引(下标)来访问数组元素:

例如:

doublesalary=balance[9];

为了定义一个结构体,您必须使用struct语句。struct语句为程序定义了一个带有多个成员的新的数据类型。

C#中的结构有以下特点:

语法:

enum{enumerationlist};

其中,

默认情况下,第一个枚举符号的值是0.以此类推。

enumDays{Sun,Mon,tue,Wed,thu,Fri,Sat};

类的定义是以关键字class开始,后跟类的名称。类的主体,包含在一对花括号内。下面是类定义的一般形式:

成员方法(函数)=》实现具体功能的代码

类的构造函数是类的一个特殊的成员函数,当创建类的新对象时执行。构造函数的名称与类的名称完全相同,它没有任何返回类型。

分类:静态变量和静态函数(方法)

调用方式:类名.静态成员名称或类名.静态函数名称

类的析构函数是类的一个特殊的成员函数,当类的对象超出范围时执行。析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。析构函数不能继承或重载。

(仅家族人士有权限或者仅自己和子孙有权限)

abstractclassClass_Name{}

1.方法可以不用实现。(意味着方法体不需要)

2.可以被继承

一个类可以派生自多个类或接口,这意味着它可以从多个基类或接口继承数据和函数。C#中创建派生类的语法如下:

<访问修饰符>class<基类>{…}class<派生类>:<基类>{…}

派生类继承了基类的成员变量和成员方法。因此父类对象应在子类对象创建之前被创建。您可以在成员初始化列表中进行父类的初始化。

多重继承指的是一个类别可以同时从多于一个父类继承行为与特征的功能。与单一继承相对,单一继承指一个类别只可以继承自一个父类。C#不支持多重继承。但是,您可以使用接口来实现多重继承。

—方法重载和重写(归于一章)方法(函数)重载:

多态是同一个行为具有多个不同表现形式或形态的能力。多态性意味着有多重形式。

属性(Property)是类(class)、结构(structure)和接口(interface)的命名(named)成员。

2.抽象类不能直接实例化。

示例:

异常是在程序执行期间出现的问题。C#中的异常是对程序运行时出现的特殊情况的一种响应

文件创建、删除、写入数据、读取数据

List、Dictionary的使用(它们都属于System.Collections.Generic这个命名空间)

泛型(Generic)允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法。

使用泛型是一种增强程序功能的技术,主要体现在以下几个方面:

[attribute(positional_parameters,name_parameter=value,…)]element

.Net框架提供了三种预定义特性:

预定义特性AttributeUsage描述了如何使用一个自定义特性类。它规定了特性可应用到的项目的类型。规定该特性的语法如下:[AttributeUsage(validon,AllowMultiple=allowmultiple,Inherited=inherited)]其中:

这个预定义特性标记了一个条件方法,其执行依赖于指定的预处理标识符。它会引起方法调用的条件编译,取决于指定的值,比如Debug或Trace。例如,当调试代码时显示变量的值。规定该特性的语法如下:[Conditional(conditionalSymbol)]例如:

[Conditional(“DEBUG”)]

这个预定义特性标记了不应被使用的程序实体。它可以让您通知编译器丢弃某个特定的目标元素。例如,当一个新方法被用在一个类中,但是您仍然想要保持类中的旧方法,您可以通过显示一个应该使用新方法,而不是旧方法的消息,来把它标记为obsolete(过时的)。规定该特性的语法如下:[Obsolete(message)][Obsolete(message,iserror)]其中:

反射指程序可以访问、检测和修改它本身状态或行为的一种能力。我们可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。

优点:

缺点:

反射(Reflection)有下列用途:

C#中的委托(Delegate)类似于C或C++中函数的指针。委托(Delegate)是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(Delegate)特别用于实现事件和回调方法。

delegate;

类似代理功能,拥有多态性,相同委托可以合并并按顺序执行。

事件(Event)基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些提示信息,如系统生成的通知。应用程序需要在事件发生时响应事件。例如,中断。C#中使用事件机制实现线程间的通信。

//基于上面的委托定义事件publicevent;

事件具有以下属性:

线程生命周期开始于System.Threading.Thread类的对象被创建时,结束于线程被终止或完成执行时。下面列出了线程生命周期中的各种状态:

THE END
1.C#经典源代码实战教程简介:本教程提供了一系列经典的C#源代码示例,涵盖了用户界面控件(如按钮、标签、文本框等)的实现,以及事件处理机制。通过分析和理解计算器源代码,初学者可以掌握C#中的函数、变量、条件判断、循环等基本编程概念。此外,教程还介绍了委托、事件、错误处理和异常处理等高级主题,帮助开发者构建健壮的C#应用程序。 https://blog.csdn.net/weixin_31620365/article/details/141614423
2.开源学习网站源码(C#)WeiSha100开源学习网站源码(C#) 这款在线学习培训系统集视频点播、题库刷题、考试于一体,让你随时随地都能进行高效学习。它不仅为学员提供海量优质学习资源,还通过智能化、数据化的管理方式,让教务管理更加便捷高效。这款系统还拥有强大的数据分析功能,能够实时了解学员学习情况,为教务管理提供强有力的数据支持。同时还提供完善https://blog.huzhan.com/nnwei/article/1049
3.hardC#学习笔记(李志著)完整pdf扫描版[75MB]附随书源码☉ 如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持! ☉ 本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。 ☉ 本站提供的Learning hard C#学习笔记 (李志著) 完整pdf扫描版[75MB] 附随书源码资源来源互联网,版权归该下载资源的合法拥有者所有。https://www.jb51.net/books/550829.html
4.资源管理器源码(c#)码农集市专业分享IT编程学习资源资源管理器源码(c#)Ed**离殇 上传1.36 MB 文件格式 rar C#源码 一个简单的资源管理 器 c# 源码, 做的很简单点赞(0) 踩踩(0) 反馈 所需:1 积分 电信网络下载 Blog.Core 2024-12-10 11:19:05 积分:1 v2020 2024-12-10 11:18:22 积分:1 https://www.coder100.com/index/index/content/id/217375
5.C#社区C# 社区是以 C# 编程语言为核心的技术资源社区,面向 C# / .NET 编程的开发人员,提供 C# 论坛,C# 教程,C# 源码,C# 技术(.net,.net framework,asp.net,mvc,.net core,winform,wpf,wcf,wf,linq,ado.net,entity framework,web service,web api,webform)交流分享等。https://www.hicsharp.com/
6..NetFramework框架源码学习Asp.net教程.Net教程Vb.net教程Singleton模式,由于其实现相对简单,所以号称设计模式中最简单的模式. 但是static通常会给你造成一些障碍.不信啊,那你就看看吧,而且还有几个Effective 条款 :) 希望不会让你失望. 该篇并没有涉及到 Framework源码,就算是挂羊头卖狗肉吧.希望延续上篇的高质量. http://blog.chinaunix.net/uid-20773131-id-572408.html
7.C#/Winform入门进阶强化扩展知识体系完善等知识点学习C#/Winform入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享,作为一名C#的Winform开发者,势必经历过从入门到自学、从基础到进阶、从学习到强化的过程。当https://blog.51cto.com/BADAOLIUMANGQZ/11663048
8.C#从入门到精通程序设计高级编程实例视频学习教程附带源码.docx教程列表:教程 1: C#视频教程 Visual C#2010 从入门到精通视频教程 C#4.0 教程教程 2: C#程序设计基于 VS2008 编程开发范例 C# 开发范例大全教程 3: C#视频教程 21 天学通 C#第二版视频教程 送源码 /PPT 教案 / 案例视频教程 4: C#开发实战 1200 例第 2 卷第 1 卷 配套视频 / 配套源码 / 两卷完整https://max.book118.com/html/2020/1120/7013005064003021.shtm
9.YSGStudyHards/DotNetGuide:C#/.NET/.NETCore学习【C#/.NET/.NET Core学习、工作、面试指南】记录、收集和总结C#/.NET/.NET Core基础知识、学习路线、开发实战、编程技巧练习、学习视频、文章、书籍、项目框架、社区组织、开发必备工具、技术前沿周刊、常见面试题、面试须知、简历模板、人才招聘、以及自己在学习和工作中的一些微薄见解。希望能和大家一起学习,共https://github.com/YSGStudyHards/DotNetGuide
10.罗分明个人网络博客asp.net,C#,js,数据库,web前端,学习笔记我是罗分明,欢迎来到我个人网络博客,我的联系方式QQ78630559,主要记录,asp.net,C#,js,数据库,web前端,我个人平时学习,以及工作问题解决方案笔记https://www.luofenming.com/
11.C#入门教程源码首页 程序开发 C#入门教程 C#入门教程源码 分享 关注 C#入门教程 共329小节 已有1480142人学过 2015年11月推出 课程概要 本套C#入门教程将从基础入手,教会您使用C#进行应用软件的开发。学会C#,便可以编写各种Windows桌面应用程序、WindowsStore应用程序以及Web应用程序等等。 教程程度: 初级中级 软件版本: Visual https://www.51zxw.net/Material.aspx?cid=548
12.全套完结零基础ASP.NETC#网站开发实战教程,最后更新202008大型工业跨平台软件C++源码提供,建模,组态!【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步 编辑推荐: · 为什么需要[EnumeratorCancellation]? · 使用C# 入门深度学习:Pytorch 基础 · 案例分享-导致MySQL崩溃的SQL语句 · .NET Core https://www.cnblogs.com/star-studio/p/12035587.html
13.C#.NET的新式开放源代码编程语言与开发人员一起学习 C# 通过C# 初学者视频系列中的实时编码演示,了解 C# 编程语言的概念和语法。 了解基础信息后,请在.NET 视频页面中浏览其他课程,你可以在其中了解如何使用 C# 生成任何类型的应用。 浏览所有课程 数据源自TechEmpower 第 21 轮中提供的官方测试。 https://dotnet.microsoft.com/zh-cn/languages/csharp
14.C#开发实例大全(基错)源码+C#开发实例大全(基错+提高卷)PDFC#源码,PDF2017-09-12 上传大小:915B 所需:50积分/C币 C#开发WindowsService程序源码加文档.pdf C#开发Windows+Service程序源码,里面详细介绍了如何开发Windows服务程序,有完整的说明文档,有实例代码可供参考,是你学习WindowsServer的好帮手 上传者:caohao时间:2011-08-19 https://www.iteye.com/resource/q651478191-9974943
15.200个C#实例源码分享吾爱破解谢谢楼主,收藏,学习。https://www.52pojie.cn/thread-997149-1-1.html
16.c#29个非常好的源代码适合初学者开发实例源码下载【C#】 域天加密锁型号读取工具 hbzsp于 2024-12-04 上传 【C#】 modbus通信助手学习 雨笑烟燃于 2024-12-03 上传 【C#】 轻量型CSV表格在C#窗体DataGridView控件中相互显示与保存的示例 laser88于 2024-12-02 上传 【C#】 LearnSite信息科技学习平台 https://www.haolizi.net/example/view_316623.html
17.C#高级编程(第9版)——C#5.0&.NET4.5.1C#高级编程(第9 版)——C# 5.0 & .NET 4.5.1XII与.NET 的区别,以及如何编写Windows 8 模式的程序。第Ⅳ部分—— 数据本部分介绍如何使用ADO.NET 访问数据库,学习ADO.NET Entity Framework。我们可以使用核心ADO.NET 获得最佳性能,而使用ADO.NET Entity Framework 可以方便地把对象映射到关系上。还讨论了现在https://www.douban.com/note/435179469/