百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

C#学习笔记9(新人必看!)

bigegpt 2024-08-09 11:08 2 浏览

C#是当前在.Net开发环境下一种十分易于使用的语言,这门语言上手容易,语法简单,那么接下来就展示一些学习这门语言中的笔记吧!本合集将要要学习的内容提炼为11天,本篇是第九天的内容,11天成为C#程序员,就是这么简单!

9 .Net学习第九天

9.1 里氏转换

子类可以赋值给父类

如果有一个地方需要一个父类对象作为参数,我们可以给一个子类对象代替

Student s = new Student();
Person p = s;

如果父类中装的是子类对象,那么可以将这个父类对象强转为子类对象

对于一个父类下的不同子类的对象,可以使用一个父类数组来存放这些子类对象

is类型转换,成功返回true,失败返回false

as类型转换,成功返回对应对象,失败返回null

9.2 集合

9.2.1 ArrayList

集合的特点:

集合的长度可以任意改变

集合的类型可以随意

ArrayList List = new ArrayList();
  • List.Add添加单个元素
  • List.AddRange添加集合元素
  • List.Clear清空集合元素
  • List.Remove删除单个元素
  • List.RemoveAt删除指定位置元素
  • List.RemoveRange删除指定下标区间的元素
  • List.Sort升序排列
  • List.Reverse反转
  • List.Insert在指定位置插入指定元素
  • List.InsertRange在指定位置插入一个集合
  • List.Contains判断是否包含指定元素

ArrayList的长度可变,其Count属性表示集合实际包含的元素个数,Capacity属性表示集合可包含的元素个数,当Count属性高于Capacity属性时,集合就会向内存中多申请一倍的空间来保证集合的长度够用

9.2.2 Hashtable

键值对集合

Hashtable ht = new Hashtable();

ht.Add(键,值)

调用时,是根据下标的键找到集合中的值

使用foreach循环调用

foreach (var item in ht.Keys)
{
  Console.WriteLine("键是{0},值是{1}", item, ht[item]);
}

9.2.3 泛型集合

List<int> list = new List<int>();

泛型集合提供的方法与ArrayList相同

但是泛型集合在实例化时就指定了该泛型集合的类型

在进行Add操作时,只能加入指定类型的元素,因此也不会发生装箱操作

9.2.4 Dictionary

键值弱集合

Dictionary<int, string> dic = new Dictionary<int, string>();

键值弱集合的使用方式与Hashtable相同,但是在建立集合时就指定了键与值的类型

KeyValuePair<int, string>

9.3 Path类

Path类是路径类,提供了一系列对文件路径操作的方式

  • GetFileName获取文件名
  • GetFileNameWithoutExtension获取不包含扩展名的文件名
  • GetExtension获取文件的扩展名
  • GetDirectorName获取文件所在文件夹的路径
  • GetFullPath获得文件所在全路径
  • ComBine将两个字符串组成一个路径

9.4 File类

操纵文件的类

  • Create创建一个文件
  • Delete删除一个文件
  • Copy复制一个文件到另一个文件
  • WriteAllBytes写入
  • ReadAllBytes读取
  • ReadAllLines返回字符串数组
  • ReadAllText返回字符串
  • WriteAllLines写入行以字符串数组形式写入每一行
  • WriteAllText写入一个字符串
  • AppendAllText追加写入一个字符串

9.5 FileStream类

FileStream 对象名 = new FileStream(文件路径, FileMode.操作方式);
FileStream fsRead = new FileStream(@"C:\Users\...", FileMode.OpenOrCreat);
byte[] buffer = new byte[1024*1024*5];
int r = fsRead.Read(buffer, 0, buffer.Length);
string s = Encoding.Default.GetString(buffer, 0, r);
fsRead.Close();
fsRead.Dispose();
Console.WriteLine(s);
Console.ReadKey();

在using中使用文件流可以帮助我们释放流所占用的资源

using(FileStream fsWrite = new FileStream(@"C:\Users\...", FileMode.Append))
{
  string str = "123";
  byte[] buffer = Encoding.Default.GetBytes(str);
  fsWrite.Write(buffer, 0, buffer.Length);
}
Console.ReadKey();

9.6 多态

让一个对象能表现出多种状态

实现多态的手段

9.6.1 虚方法

使用关键字virtual将父类的方法标记为虚方法

这个函数可在子函数中方法用关键字override将同名方法标记作为重写方法

9.6.2 抽象类

当父类中的方法不知道如何实现的时候,可以考虑将父类写成抽象类,将方法写成抽象方法

使用关键字abstract将父类标记为抽象类

使用关键字abstract将父类中的方法标记为抽象方法,必须没有方法体和{}

使用关键字override在子类中重写这个方法

抽象类的注意事项

抽象成员必须标记为abstract

抽象成员必须在抽象类中

抽象类不能被实例化

子类继承抽象类后,必须把该父类的所有抽象对象重写

抽象成员的访问修饰符不能是private

抽象类是有构造函数的

如果父类的抽象方法有参数,那么子类在重写时必须传入参数

如果父类的抽方法有返回值,那么子类在重写时必须传回返回值

9.7 访问修饰符

public:公开的,能被所有成员访问的

private:私有的,只能被类内成员访问的

protected:受保护的,只能被类内成员以及子类访问的

internal:只能被当前程序集访问的

protected internal:

能够修饰类的访问修饰符:public、internal(子类的访问权限不能高于父类的访问权限)

相关推荐

【Docker 新手入门指南】第十章:Dockerfile

Dockerfile是Docker镜像构建的核心配置文件,通过预定义的指令集实现镜像的自动化构建。以下从核心概念、指令详解、最佳实践三方面展开说明,帮助你系统掌握Dockerfile的使用逻...

Windows下最简单的ESP8266_ROTS_ESP-IDF环境搭建与腾讯云SDK编译

前言其实也没啥可说的,只是我感觉ESP-IDF对新手来说很不友好,很容易踩坑,尤其是对业余DIY爱好者搭建环境非常困难,即使有官方文档,或者网上的其他文档,但是还是很容易踩坑,多研究,记住两点就行了,...

python虚拟环境迁移(python虚拟环境conda)

主机A的虚拟环境向主机B迁移。前提条件:主机A和主机B已经安装了virtualenv1.主机A操作如下虚拟环境目录:venv进入虚拟环境:sourcevenv/bin/active(1)记录虚拟环...

Python爬虫进阶教程(二):线程、协程

简介线程线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能...

基于网络安全的Docker逃逸(docker)

如何判断当前机器是否为Docker容器环境Metasploit中的checkcontainer模块、(判断是否为虚拟机,checkvm模块)搭配学习教程1.检查根目录下是否存在.dockerenv文...

Python编程语言被纳入浙江高考,小学生都开始学了

今年9月份开始的新学期,浙江省三到九年级信息技术课将同步替换新教材。其中,新初二将新增Python编程课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法按照教材...

CentOS 7下安装Python 3.10的完整过程

1.安装相应的编译工具yum-ygroupinstall"Developmenttools"yum-yinstallzlib-develbzip2-develope...

如何在Ubuntu 20.04上部署Odoo 14

Odoo是世界上最受欢迎的多合一商务软件。它提供了一系列业务应用程序,包括CRM,网站,电子商务,计费,会计,制造,仓库,项目管理,库存等等,所有这些都无缝集成在一起。Odoo可以通过几种不同的方式进...

Ubuntu 系统安装 PyTorch 全流程指南

当前环境:Ubuntu22.04,显卡为GeForceRTX3080Ti1、下载显卡驱动驱动网站:https://www.nvidia.com/en-us/drivers/根据自己的显卡型号和...

spark+python环境搭建(python 环境搭建)

最近项目需要用到spark大数据相关技术,周末有空spark环境搭起来...目标spark,python运行环境部署在linux服务器个人通过vscode开发通过远程python解释器执行代码准备...

centos7.9安装最新python-3.11.1(centos安装python环境)

centos7.9安装最新python-3.11.1centos7.9默认安装的是python-2.7.5版本,安全扫描时会有很多漏洞,比如:Python命令注入漏洞(CVE-2015-2010...

Linux系统下,五大步骤安装Python

一、下载Python包网上教程大多是通过官方地址进行下载Python的,但由于国内网络环境问题,会导致下载很慢,所以这里建议通过国内镜像进行下载例如:淘宝镜像http://npm.taobao.or...

centos7上安装python3(centos7安装python3.7.2一键脚本)

centos7上默认安装的是python2,要使用python3则需要自行下载源码编译安装。1.安装依赖yum-ygroupinstall"Developmenttools"...

利用本地数据通过微调方式训练 本地DeepSeek-R1 蒸馏模型

网络上相应的教程基本都基于LLaMA-Factory进行,本文章主要顺着相应的教程一步步实现大模型的微调和训练。训练环境:可自行定义,mac、linux或者window之类的均可以,本文以ma...

【法器篇】天啦噜,库崩了没备份(天啦噜是什么意思?)

背景数据库没有做备份,一天突然由于断电或其他原因导致无法启动了,且设置了innodb_force_recovery=6都无法启动,里面的数据怎么才能恢复出来?本例采用解析建表语句+表空间传输的方式进行...