《C# 语言入门详解(刘铁锰) - 学习笔记》

这篇博客详细介绍了C#语言,包括其概念、特点,.NET Framework与.NET Core的关系,以及C#的语法基础如关键字、类型、变量、常量、注释、表达式等。还探讨了数组、集合与字典、分支和循环语句、访问修饰符(封装)、方法、类和对象等。此外,预告了将要涉及的委托、泛型和接口等进阶主题。
摘要由CSDN通过智能技术生成

C# 学习笔记



前言

  • 本篇主要介绍C#的一些基础语法知识,如变量、数组、表达式、类、函数等;
  • 本篇后续会补充一些关于C#的一些不常见知识的基础概念

一、C# 语言及其特点

1. C# 语言概念及其特点

  • C# 是微软发布的一种面向对象的、运行于 .NET Framework.NET Core(完全开源,跨平台) 之上的高级程序设计语言;
  • C# 是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的 面向对象 的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性;
  1. 面向对象与面向过程编程语言的区别:
  • 面向过程: 是一种以过程为中心的编程思想。它是一种基础的顺序思维方式,是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响;特性: 模块化、流程化;常见的 面向过程编程语言 有: C语言、COBOL 语言、Fortran语言 等。(优点: 性能比面向对象高,面向对象类调用需要实例化,消耗资源)
  • 面向对象: 是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。它是直接把所有事物都当作独立的对象,处理问题过程中所思考的不再主要是怎样用数据结构来描述问题,而是直接考虑重现问题中各个对象之间的关系。(面向对象方法的基础实现中也包含面向过程思想);特性: 抽象 封装 继承 多态;常见的支持面向对象的编程语言有:C++ 语言、C# 语言、Java 语言、Python等。(优点: 有封装、继承、多态的特性,故而易维护、易复用、易扩展)

2. 认识.NET Framework & .NET Core

1. .NET与C#的关系:

  • .NET是平台;
  • C# 是平台所适用的对象,C# 只能运行在.NET 平台,但.NET平台还可适配其它对象,如C++,VB等。
    在这里插入图片描述

2. .NET Framework 与 .NET Core的关系:

  • .Net Framework 历史要比 .Net Core 久一些。.Net Framework 的第一个版本大约在2002年前后推出的,而.Net Core的第一个版本,大约在2016年前后推出的,相差了将近14年的时间;
  • .Net Framework,只针对Windows平台,包含了Windows平台的所有特性;.Net Core 可以针对多个平台发布,但是.Net Core 无法包含.Net Framework的所有特性。但是.Net Core的跨平台特性可以方便的在多个平台上共享业务逻辑。

更多内容:详见.NET Framework 与 .NET Core 的区别与联系

二、C# 语法基础

1. 关键字

  • 关键字: 是预定义的保留标识符,对编译器有特殊意义。(除非前面有 @ 前缀,否则不能在程序中用作标识符。 例如,@if 是有效标识符,而 if 则不是,因为 if 是关键字。)
  • 常见的关键字:
    在这里插入图片描述

2. 类型

C# 的类型一共分为两类,一种是值类型(Value Type),一类是引用类型(Reference)。

  • 值类型: 直接存储其值;值类型变量声明后,不管是否赋值,编译器为其分配内存;值类型的实例通常是在线程栈上分配的(静态分配),但在某些情形下可以存储在堆上。
  • 引用类型: 存储其对值的引用;引用类型声明一个类时,只在栈中分配一小片内存用于容纳一个地址,并没有为其分配堆上的内存空间。当使用 new 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中;引用类型的对象总是在进程堆中分配(动态分配)
  • 常见的值类型: 数值类型(int、long、double、float等)、bool类型(true、false)、char类型、枚举类型(enum)、结构体类型(struct)、元组类型(tuple)、可空类型(null);(即:byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。)
  • 常见的引用类型: 数组,用户定义的类、接口、委托,object,字符串。(即:string 和 class统称为引用类型。)

更多内容:详见C#的两种类据类型:值类型和引用类型

3. 变量、常量与注释

1. 变量与常量

  • 变量: 是一个供程序存储数据的盒子。在C# 中,每个变量都有一个特定的类型,不同类型的变量其内存大小也不尽相同;
  • 常量: 是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量;(定义时,用const修饰符,如:public const int a = 1;)
  • 变量和常量是相对的:变量是指所存放的值是允许改变的,而常量表示存入的值不允许改变。
  1. C# 中提供的基本的值类型大致可以分为以下几类:
    在这里插入图片描述
    C# 允许定义其他值类型的变量,比如 enum,也允许定义引用类型变量,比如 class。

2. 注释

  • 块注释: /* 注释内容 */
  • 单行注释: // 注释内容
  • 文档注释: /// 注释内容 (用于类、函数或方法的解释性注释方式)///
  • 注释快捷键: ctrl + k + c (注释);ctrl + k + u (取消注释)

4. 表达式

  • 表达式 = 操作数 + 运算符
  • 运算符: +、-、*、/、new;
  • 操作数: 文本、字段、局部变量、表达式;
  • 常用运算符优先级(从高到低排列)如下:
    在这里插入图片描述
  1. 其他运算符
    在这里插入图片描述

5. 数组、集合与字典

1. 数组

  • 定义: 数组是一组 相同类型 的数据;数组中的数据需要通过 数字索引 来访问;
  • 声明: 使用 关键字new 来声明;
    在这里插入图片描述
  • 获取数据: 用索引获取数组内的元素时,索引从0开始,因此数组中最大的索引数字,比指定数组长度小1。
    在这里插入图片描述
  • 优势: 数组在内存中是 连续存储的,所以它的 索引速度是非常的快,而且赋值与修改元素也很简单。
  • 劣势: 1. 数组的两个数据间 插入数据很麻烦;2. 在声明数组的时候,必须同时 指明数组的长度,数组的长度过长,会造成内存浪费,过短会造成数据溢出的错误。

2. 集合

  • 定义: 集合和数组类似,都是用于存放 一组值
  • ArrayList 集合: ArrayList 是.NET Framework提供的用于数据存储和检索的专用类;
    在这里插入图片描述
  • ArrayList 的优势: 1. ArrayList 的大小是按照其中存储的数据来 动态扩充和收缩的;2. 在声明ArrayList对象时,不需要指定其长度 ;3. ArrayList可以 很方便的进行数据的添加、插入和移除。  (弥补了数组的劣势)
  • ArrayList 的劣势: 1. ArrayList在存储数据时,使用 object类型 进行存储的;2. ArrayList不是类型安全的,使用时可能会 出现不匹配 的错误;3.就算都有插入了同一类型的数据,但在使用的时候,我们也需要将它们转化为对应的原类型来处理;4.ArrayList的存储存在 装箱和拆箱 的操作,导致其性能低下。

※ 装箱与拆箱的概念:(装箱 与 拆箱 的过程会产生较多的性能损耗)

<
  • 24
    点赞
  • 158
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值