学习笔记(C#基础书籍)-- C#基础篇

(12.24)

C#介绍:《第一章》

特点:语法简洁,面向对象,支持绝大部分的web标准,强大的安全机制(垃圾回收器),兼容性好(遵循.NET的公共语言规范【CLS】,从而能跟其他语言开发组件兼容),完善的异常处理机制。
C#与.Net相辅相成:.Net Framework有两个主要组件:公共语言运行时(CLR),和类库。

C#项目入门:《第二章》

using[需导入的命名空间] + namespace[自己的命名空间] + class[类] + main方法[程序的主入口方法]

主入口方法main中,通常不写具体逻辑代码,只用作类实例化和方法调用。

Console类表示控制台应用程序的标准输入流,输出流和错误流。Read/ReadLine方法控制台读入,分别为int/string 类型。
Write/WriteLine方法来向控制台输出,分别为输入后不换行/输出后换行。

命名规范:
用有意义的名字定义命名空间:例如:公司名产品名。
接口的名称加前缀‘I’
类名最好能体现类的功能
方法名一般为动宾短语
定义成员变量时,最好加前缀‘_’。

C#基础语法:《第三章》

整数类型:
有符号:sbyte(8)(-128~127),short(16),int(32),long(64)
无符号:byte(8),ushort(16),uint(32),ulong(64)
浮点类型:
float(7),double(15~16)
需要使用float类型变量时,必须在数值的后面跟随f或者F
字符类型:
char类

变量:
静态变量static ,有效范围可以跨类,甚至可以达到整个应用程序内,直接以 [类名.静态变量] 的方式在其他类中使用。

常量:
const静态常量,常量的值必须在声明时就进行初始化。
readonly常量进行动态赋值,动态常量,只能在构造函数中进行赋值,在运行时确认数值

运算符
逻辑运算符:与(&&,&),或(||,|),非(!)
位运算符:位与(&)【同为1则结果为1】,位或(|)【同为0则结果为0】,位异或(^)【二进制表示相同为0,否则为1】,取反(~)【】
移位运算符:左移位(<<),右移位(>>)

数据类型转换
使用convert类进行转换,可进行显式类型转换

C#流程控制语句《第四章》

if,if…else if…else
switch语句:switch(判断参数){ case 常量值1:语句块1 break; … defaul:语句块n+1 break; }
while ,do…while
for循环以及变体
跳转语句:用于提前结束循环。break;(循环结束) 和 continue;(结束本次循环)

C#数组《第五章》

一维数组:创建:先声明,再用new关键字进行内存分配;初始化;使用;
二维数组:创建:先声明,再用new关键字进行内存分配;初始化;使用;
数组与Array类:可以使用Array类中的各种属性或者方法对数组进行各种操作
数组的基本操作:
1.使用foreach遍历数组:foreach(【类型】【迭代变量名】in 【集合】){ 语句 }
2.对数组进行排序:
sort方法:只能对一维数组进行排序:Array.Sort(arr);
reverse方法:用于反转一维Array中元素的顺序

C#字符串《第六章》

提取字符串信息:
1.获取长度:Length属性,
2.获取指定位置的字符:直接用下标即可
3.获取子字符串索引位置:indexOf,返回搜索的字符串首次出现的索引位置;lastIndexOf,返回搜索的字符串最后一次出现的索引的位置
4.判断字符串首尾内容:startWith,endWith(返回true or false)
字符串操作:
1.拼接: 使用 ”+“ 运算符
2.比较字符串:Equals
3.大小写转换ToUpper,ToLower
4.格式化字符串:
string类提供了一个静态的Format方法,用于将字符串数据格式化指定的格式,包括货币,指数,定点,number,百分比,十六进制
Format也可以根据日期时间按照某种标准格式输出,DataTime类型格式
5.截取字符串: .Substring (int startIndex,int length)
6.分割字符串:.Split(char[] separator)
7.去除空白内容:.Trim()
8.替换字符串:.Replace(char Ochar,char Nchar) ==> newstr = strold.Replace ( ‘,’ , ‘*’ );

可变字符串类:StringBuilder类,由于使用‘+’会产生一个新的string对象,会在内存中创建新的字符串对象。而提供可变的字符序列StringBuilder类,大大提高了频繁增加字符串的效率,降低系统开销。
程序中定义:创建一个StringBuilder对象,用new进行实例化
类使用:
1…Append(“string"):将文本或字符串追加到指定对象的末尾
2…AppendFormat(“{0:C0}”,Num):自定义变量的格式并将值追加到stringBuilder对象的末尾
3…insert(0,“软件:”):将字符串添加到当前StringBuilder对象中的指定位置
4…Remove(int startIndex,int lenth):移除指定数量的字符
5…Replace(stringold,stringnew):用另一个指定的字符来替换StringBuilder对象内的字符

StringBuilder和string的区别:string本身是不可改变的,只能赋值一次,每一次内容发生改变,都会生成一个新的对象,然后原有的对象引用新对象。而StringBuilder每次操作都是对自身对象进行操作,而不是生成新对象,其所占空间会随着内容的增加而扩充。

C#面向对象程序设计《第七章》

由面向过程发展而来,他将数据和对数据的操作看作是一个不可分割的整体,将现实问题简单化。
面向对象的描述:OO,设计思想。
1.对象:随处可见的一种事务就是对象,对象是事务存在的实体,对象可表示为:属性+行为。类实际上就是封装对象属性和行为的载体,而对象则是类抽象出来的一个实例。
2.类:就是同一类事务的统称。类是世间事物的抽象称呼,而对象则是整个事务相对应的实体。面临实际问题,通常需要实例化对象来解决。类是封装对象的属性和行为的载体。
3.三大基本特征:封装继承多态。

=》类:

声明:class
字段:常见的常量或者变量
属性:对现实实体特征的抽象,提供对类或对象的访问

private string tradecode;
public string TradeCode
{get{return tradecode;}		//get,set可以是其他的语句set{tradecode = value;}
}

构造函数:
默认构造函数和有参构造函数
静态构造函数:在C#中可以为类定义静态构造函数,这种构造函数只执行一次。主要原因:类有一些静态字段或者属性,需要在第一次使用类之前,从外部源中初始化这些静态字段和属性
析构函数:自动调用,不需要显示调用

方法:方法用来定义可执行的操作,方法是和类相关联的动作

方法的参数:
1.值参数:形参和实参按值传递,对形参的修改并不会影响实参。
2.ref参数:使形参按引用传递(即使形参是值类型),在方法中对形参所做的任何更改都将反应在实参中,使用时方法声明和方法调用都必须显示使用ref关键字
3.out参数:用来定义输出参数,它会导致参数通过引用来传递,跟ref差别在于,ref要求变量必须在传递之前进行赋值,而out不赋值即可使用,同样方法声明和方法调用都必须显示使用out关键字
4.params参数:如果有多个相同类型的参数,params是一个一维数组,主要用来指定在参数数目可变时所采用的方法参数
(整体举例在P171)

方法的重载:不能仅仅根据返回值类型不同进行区分,不能仅根据参数是否声明为ref,out或者params来区分。

类的静态成员:

不同的类之间需要对同一个变量进行操作,比如一个水池,同时打开进水口和出水口,水池中的水量可认为是一个共享的变量,把共享的变量或者方法用static修饰,就被成为静态变量和静态方法(静态成员),静态成员是属于类所有的,在调用时,不用创建类的对象,直接使用类名调用。

对象的创建及使用:

对象的产生,操作,和销毁。
创建:用new关键字调用构造函数创建对象。
C#中提供了this关键字,表示本类的一个对象,在局部变量或方法参数覆盖了成员变量时,可以使用this关键字明确引用的是类成员还是方法的形参。另外还可以作为方法的返回值,用来返回本类的对象。
销毁:C#有一套完整的垃圾回收机制。何种对象会被.net垃圾回收器视为垃圾?
主要包括:对象引用超过其作用范围,将对象赋值为null。
类与对象的关系:类是具有相同或相似结构,操作和约束规则的对象组成的集合,而对象是某一类的具体化实例

=》继承:

C#中只支持单继承,而不支持多继承;子类的可访问性一定要低于或者等于父类的可访问性。
base关键字:想在子类的方法中实现父类原有的方法,base代表父类对象,(对比this关键字代表本类对象)
使用方法:base.property; //调用父类的属性 base.method(); //调用父类的方法
另外base关键字还可以指定创建派生类实例时应调用的基类构造函数

//例如基类Goods定义一个构造函数,用来定义的属性赋初值
public Goods(string tradecode,string fullname)
{......
}
//派生类JHInfo中定义构造函数时,即可使用base关键字调用基类的构造函数,代码如下
public JHInfo(string jhid,string tradecode,string fullname) : base(tradecode,fullname)
{......
}

需注意,访问父类成员只能在构造函数,实例方法或者实例属性中进行,因此从静态方法中使用base关键字是错误的。
派生类的构造函数会根据层次结构找到最顶层的基类,并调用基类的构造函数,然后再一次调用各级派生类的构造函数。析构函数的执行顺序与构造函数的相反。

=》多态:

C#中类的多态性是通过在派生类中重写基类的虚方法来实现的

1.虚方法的重写:

除开构造函数外,方法在默认情况下可以显示地声明为virtual,为虚方法。定义为虚方法之后,可以在派生类中重写虚方法,重写虚方法使用override关键字。在调用方法时,可以调用对象类型的合适方法。

2.抽象类与抽象方法:

如果一个类不与具体的事物联系,而只是表达一种抽象的概念或者行为,仅仅是作为其派生类的一个基类,那就是抽象类(“去商场买衣服”),(用abstract关键字)。【访问修饰符 abstract class 类名 : 基类或接口{ //类成员 }】
跟非抽象类的区别:a.抽象类不能直接实例化,b.抽象类可以包含抽象成员,而非抽象类中不可以,c.抽象类不能被密封
类中只要有一个方法声明为抽象方法,这个类也必须被声明为抽象类
当从抽象类派生一个非抽象类时,需要在非抽象类中重写抽象方法,(override关键字)

3.接口的使用:

由于类不支持多重继承,但出现多重继承的情况又比较多,C#提出了接口的概念,通过接口可以实现多重继承的功能,接口是一种标准,强制性要求派生类必须实现接口约定的规范(interface关键字)
接口特征:a.类似于抽象基类:继承接口的任何类型都必须实现接口的所有成员;b.接口中不能包括构造函数,因此不能直接实例化接口;c.接口访问永远是公共的;d.接口中的成员不能声明为虚拟或者静态。
接口定义时,可提供set,get访问器;实现接口成员时,必须添加public修饰符,不能省略。
接口可以多继承:

interface ITest1{}
interface ITest2{}
interface ITest3{}
class Test : ITest1,ITest2,ITest2		//继承3个接口,接口之间用逗号分隔
{}

ref和params参数使用注意要点:
ref:必须用ref修饰实参,ref参数在调用之前一定要进行赋值
params:只能在一维数组上使用,不允许使用ref或者out修饰params,一个方法最多只能有一个params参数。

抽象类与接口的区别:
a.抽象类可以有非抽象方法,接口所有的方法都是抽象方法;b.抽象类属性中可以有非静态常量,接口的所有属性都是静态常量;c.抽象类有构造函数,接口没有构造函数。d.抽象类一个类只能继承一个父类,接口一个类可以同时实现多个接口。

C#异常处理《第十一章》
是System.Exception的直接或间接子类
try…catch语句

try{//被监控的代码
}
catch(Exception ex)		//也可以检测抛出多个异常,顺序先子类后父类
{//异常处理
}
......//可选添加后续finally代码
finally
{	  //程序代码
}

throw语句

throw new XXXXXException();
//后也可使用catch进行捕获

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Net9解决Spire.Pdf替换文字后,文件格式乱掉解决方法

官方文档 https://www.e-iceblue.com/Tutorials/Spire.PDF/Program-Guide/Text/Find-and-replace-text-on-PDF-document-in-C.html C# 在 PDF 中查找替换文本 原文件如下图&#xff0c;替换第一行的新编码&#xff0c;把41230441044替换为41230441000 替换代码如下&#xff…

【C语言程序设计——选择结构程序设计】预测你的身高(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 1、输入数值 2、选择结构语句 3、计算结果并输出 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;编写一个程序&#xff0c;该程序需输入个人数据&#xff0c;进而预测其成年后的身高。 相关知识 为了完成本…

【自动化测试】windows下安装Selenium浏览器界面测试工具

Date: 2024.12.23 10:15:53 author: lijianzhan 简述&#xff1a;这篇教程详细介绍了如何在Windows环境下安装selenium&#xff0c;并设置Chrome浏览器驱动。什么是Selenium&#xff1f;Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端…

前端网络之【浏览器跨域问题分析与解决方案】

文章目录 同源策略同源与异源跨域的限制场景解决方案 CORS 请求分类 简单请求预检请求 注意点一 【关于Cookie】注意点二 【关于跨域获取响应头】 JSONP 基本流程 代理服务器 如何选择对应方案 同源策略 **同源策略是一套浏览器的安全策略机制&#xff0c;当一个源的文档和脚…

老旧小区用电安全保护装置#限流式防火保护器参数介绍#

摘要 随着居民住宅区用电负荷的增加&#xff0c;用电安全问题日益突出&#xff0c;火灾隐患频繁发生。防火限流式保护器作为一种新型电气安全设备&#xff0c;能够有效预防因电气故障引发的火灾事故。本文介绍了防火限流式保护器的工作原理、技术特点及其在居民住宅区用电系统…

论文复刻:ESG表现对企业价值的影响机制研究——A股上市公司证据(2009-2023年)

参照王波&#xff08;2022&#xff09;的做法&#xff0c;对来自软科学《ESG表现对企业价值的影响机制研究——来自我国A股上市公司的经验证据》一文中的基准回归部分进行复刻 以中国2009-2023年A股上市公司为研究样本考察企业的环境、社会和治理&#xff08;ESG&#xff09;表…

小程序租赁系统开发指南与实现策略

内容概要 在如今这个快节奏的时代&#xff0c;小程序租赁系统的开发正逐渐成为许多商家提升服务质量与效率的重要选择。在设计这样一个系统时&#xff0c;首先要明白它的核心目标&#xff1a;便捷、安全。用户希望在最短的时间内找到需要的物品&#xff0c;而商家则希望通过这…

[2003].第2-01节:关系型数据库表及SQL简介

所有博客大纲 后端学习大纲 MySQL学习大纲 1.数据库表介绍&#xff1a; 1.1.表、记录、字段 1.E-R&#xff08;entity-relationship&#xff0c;实体-联系&#xff09;模型中有三个主要概念是&#xff1a; 实体集 、 属性 、 联系集2.一个实体集&#xff08;class&#xff09…

git推送本地仓库到远程(Gitee)

目录 一、注册创建库 二、创建仓库 三、推送本地仓库到远程 1.修改本地仓库用户名和邮箱 2.本地库关联远程仓库 3.拉取远程仓库的文件 4.推送本地库的文件 5.查看远程仓库 四、远程分支查看 1.查看远程分支 2.修改test.txt文件 一、注册创建库 Gitee官网&#xff1…

GoZero框架接入数据库引擎Gorm 并实战:构建简单的 CRUD 业务API

GoZero 是一个高性能的微服务框架&#xff0c;它基于 Go 语言开发&#xff0c;提供了丰富的工具支持&#xff0c;能够帮助开发者快速构建可扩展、易维护的应用。Gorm 是 Go 语言中常用的 ORM 库&#xff0c;它帮助我们简化数据库操作&#xff0c;使用面向对象的方式进行增删改查…

KNN分类算法 HNUST【数据分析技术】(2025)

1.理论知识 KNN&#xff08;K-Nearest Neighbor&#xff09;算法是机器学习算法中最基础、最简单的算法之一。它既能用于分类&#xff0c;也能用于回归。KNN通过测量不同特征值之间的距离来进行分类。 KNN算法的思想&#xff1a; 对于任意n维输入向量&#xff0c;分别对应于特征…

探索Flink动态CEP:杭州银行的实战案例

摘要&#xff1a;本文撰写自杭州银行大数据工程师唐占峰、欧阳武林老师。将介绍 Flink 动态 CEP的定义与核心概念、应用场景、并深入探讨其技术实现并介绍使用方式。主要分为以下几个内容&#xff1a; Flink动态CEP简介 Flink动态CEP的应用场景 Flink动态CEP的技术实现 Flin…

打造高效租赁小程序让交易更便捷

内容概要 在如今节奏飞快的商业世界里&#xff0c;租赁小程序如同一只聪明的小狐狸&#xff0c;迅速突围而出&#xff0c;成为商家与消费者之间的桥梁。它不仅简化了交易流程&#xff0c;还在某种程度上将传统租赁模式带入了互联网时代。越来越多的企业意识到&#xff0c;这种…

【MinIO系列】MinIO Client (mc) 完全指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Jmeter录制https请求

jmeter 5.5版本&#xff0c;chrome浏览器 1、首先添加Test Plan-Thread Group-HTTP(S) Test Script Recorder 2、设置HTTP(S) Test Script Recorder界面的Port&#xff08;监听端口&#xff0c;设置浏览器代理时需要与这里保持一致&#xff09;、HTPS Domains&#xff08;录制…

前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!

Vue 快速上手 Vue概念 Vue 是一个用于构建用户界面的渐进式框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;循序渐进 框架&#xff1a;一套完整的项目解决方案 Vue 的两种使用方式: ① Vue 核心包开发 场景:局部 模块改造 ② Vue 核心包 &am…

基于Spring Boot的高校请假管理系统

一、系统背景与意义 随着高校规模的扩大和学生数量的增加&#xff0c;传统的请假管理方式已经难以满足高校管理的需求。人工请假流程繁琐、耗时长&#xff0c;且容易出现信息错误或遗漏。因此&#xff0c;开发一套基于Spring Boot的高校请假管理系统具有重要意义&#xff0c;它…

Gate.io 平台通证 GT:持续赋能与销毁、财富效应显著

在瞬息万变的加密市场中&#xff0c;每一轮牛熊转换都在加速 CEX 市场的一轮又一轮洗牌&#xff0c;这也使得该赛道的格局始终处于动态的变化。而在本轮牛市中&#xff0c;CEX 赛道也正在从最初的三大领衔变成了多强角逐&#xff0c;而 Gate.io 作为创立 11 余年的老牌交易平台…

WebRTC音视频同步原理与实现详解(下)

WebRTC音视频同步原理与实现详解&#xff08;上&#xff09; 第四章、音视频同步实现详解 4.1 音视频同步标准 音视频做到什么程度才算是同步呢&#xff1f; 关于音画同步, 业界有3个标准&#xff1a; 1&#xff09;ITU-R BT.1359&#xff08;1998&#xff09;&#xff1a…

1.系统学习-线性回归

系统学习-线性回归 前言线性回归介绍误差函数梯度下降梯度下降示例 回归问题常见的评价函数1. MAE, mean absolutely error2. MSE, mean squared error3. R square &#xff08;决定系数或R方&#xff09; 机器学习建模流程模型正则化拓展阅读作业 链接: 2.系统学习-逻辑回归 …