深入.NET平台和C#编程总结大全
第一章 简单认识.NET框架
(1)首先我们得知道 .NET框架具有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework Class Library)
配图:

(2).NET的编译过程:
配图:

其中,CLR还包括通用类型系统CTS(Common Type System)和公共语言规范CLS(Common Language Specification)
(3).NET框架核心类库及其功能
配图:

(4)
C#语言要编程可以被CPU解析执行的代码需要两次编译:
第一次编译:将C#语言通过C#编译器编译成MSIL中间代码
第二次编译:将MSIL代码通过即时编译器(JIT)编译成CPU可以解析执行的代码,或者成为(平台专用代码)
Java程序想要被CPU解析执行也需要两次编译:
第一次编译:将后缀名为java的文件通过Java编译器编译成后缀名为.class(字节码)文件
第二次编译:将.class文件通过Java虚拟机(jvm)编译成CPU可以解析的代码
(5)面向对象
面向对象三大特性:封装,继承和多态
那些年我们学过的访问修饰符:
public :任何位置,包括跨程序集
internal:在当前程序集(项目)中都可以访问
private:只能在当前类中访问(当前类的花括号中访问)
protected:只能在当前类和子类中使用
(6)变量,类和方法的命名
骆驼命名法:第一个单词的首字母小写,后续有含义的单词首字母大写。 变量
帕斯卡命名法:每一个单词的首字母大写 类和方法
(7)new:代表的含义
1.创建对象
2.开辟空间
3.自动调用构造函数
(8)字段和属性的区别
1.属性不能保存数据,真正保存数据的是字段。
2.属性是可有可无的,字段是必须的。
3.如果字段只是让类内部访问,那么设置成private,如果想找一个中间者,在Main方法中访问到类中的私有字段,那么属性可以是一种选择。
(9)自动属性
定义:当为我们不需要进行逻辑判断时可以使用自动属性。 定义自动属性在后台会自动帮我们生成一个对应数据类型的私有字段
(10)CLR的主要用途:
CLR是所有.NET程序运行的环境,是所有.NET应用程序的编程基础,所有.NET受CLR监管和处理,这些操作包括进程内的应用程序加载,将IL转换为GG,
异常处理,垃圾回收,加载程序集
第二章 深入C#数据类型
(1)值类型和引用类型
值类型:是在栈上存储真实的值 引用类型:在栈和堆上都开辟空间
值类型:int double float boolean char byte long short 枚举(enum) 结构体(struct)
引用类型:int[] class 接口(interface) string
(2)结构
定义:
访问修饰符 struct 结构名{// 结构体}例:
public struct Student
{//结构体
}
(2)注意点:
1.在结构中可以有字段和方法
2.定义结构时,结构中的字段不能被赋初值
3.可以不用new,直接定义结构的对象即可
4.声明结构的对象后,必须给结构的成员赋初值
5.结构体也是一种特殊的值类型
(3)装箱和拆箱
将值类型转换为引用类型的过程称为装箱,反之称为拆箱
示例:
static void Main(String[] args)
{int i=123;oject o=i; //装箱i=456; //改变i的内容Console.WriteLine("值类型的值:{0}",i); Console.WriteLine("引用类型的值:{0}",o);
}
(4)不同类型的参数传递
值方式参数传递:传递数据类型是值类型,没有ref在方法中不会保留
传递数据类型是引用类型,没有ref在方法中会永久保留
引用方式传递:不管有没有ref都会永久保留
例:class Voter
{public void Vote(SE se){//人气值+1se.Popularity++;}
}/测试相关代码SE zhang=new SE();
zhang.Age=25;
zhang.Name="张梅";
zhang.Gender=Gender.female;
zhang.Popularity=10;
//投票前
MessageBox.Show(zhang.SayHi());
Voter voter=new Voter();
voter.Vote(zhang); //引用类型做参数
//投票后
MessageBox.Show(zhang.SayHi());
(5)结构和类的区别
1.结构是值类型而类是引用类型
2.结构和另外一个结构不能继承和被继承
3.结构没有默认构造而类有
4.结构体没有析构函数而类有
5.结构体可以不使用new初始化,而类不可以
第三章 使用集合组织相关数据
(1)定义:
集合:
某些特定的对象集中在一起就是集合
数组:
可以存储相同数据类型的一堆数据的容器
(2)集合
集合分为泛型集合和非泛型集合
泛型集合分为单列和双列集合 (List<T>和Dictionary<K,V>)
非泛型集合分为单列和双列集合 (ArrayList和HashTable)
(3)常用的方法和属性
Add(); //添加Remove(); //删除RemobeAt(); //根据索引删除 不适用 双列集合 count //集合存储元素的个数Contains(); //检测元素是否存在ContainsKey(); //ContainsValue();Capcity //集合占用空间
注意事项:如果删除了集合中的某一个元素,那么集合的索引会自动维护
(4)遍历方案:
ArrayList list=new ArrayLIst();
Student stu1=new Student();stu1.Name="jiejie";stu1.Age=15;list.Add(stu1);
Student stu2=new Student();stu2.Name="jiji";stu2.Age=18;list.Add(stu2);//foreach
foreach(Student item in list)
{Console.WriteLine(item.Age+"\t"+item.Name);
}//for
for(int i=0;i<list.Count;i++)
{Console.WriteLine((Student)list[i].Name);
}
HashTable 遍历三种方案HashTable table=new HashTable();
第一种方式:遍历所有的Keys
foreach(var item in table.Keys)
{//一个item代表一个keyConsole.WriteLine("key是{0}\tvalue是{1}",item,table[item]);
}第二种遍历方式:遍历所有的value集合
foreach(var item in table.Values)
{//一个item代表一个valueConsole.WriteLine("value是{0}",item);
}//遍历整个table
foreach(DictionaryEntry item in table)
{Console.WriteLine("key是{0}\tvalue是{1}",item.Key,item.Value);
}
第四章 深入类的方法
(1)构造函数
方法名和类名相同,没有返回值
注意:在C#中,当我们定义了一个类后,系统底层默认会生成一个和类名相同的无参构造,但是如果我们定义了一个带参构造,系统将不生成无参构造,但是在
真正的开发中建议大家定义两个构造函数,一个无参构造和带参构造
public class SE
{public SE()
{}public SE(string id,string name,int age,Gender gender,int popularity)
{Id=id;Name=name;Age=age;Gender=gender;Popularity=popularity;
}
}
(2)方法的重载
在同一个类中,如果有多个方法方法名相同,但是参数的个数,顺序,类型不同的多个方法可以构成重载和方法的返回值类型没有关系。
public void Say(string name,int age)
{}public void Say(int age,string name)
{}
(3)对象间的交互
//遥控器类
public class RemoteControl
{//开机public void TurnOn(Tv tv){tv.Open(); //调用电视机对象的开机方法}//关机public void TurnOff(Tv tv){tv.TrunOff();}//换台public void ChangeChannel(Tv tv){Console.WriteLine("请输入频道:");string ChannelNo=Console.ReadLine();tv.Change(ChannelNo);}
//电视机类
public class Tv
{public boolean isOn=false; //是否开机//打开电视机public void Open(){if(isOn){Console.WriteLine("电视机已打开");}else{Console.WriteLine("成功打开电视机");isOm=true;}}//关机public void TurnOff(){if(isOn){Console.WrteLine("电视机正在关机");isOn=false;}else{Console.WriteLine("电视机已关闭");}}//换台public void Change(string channelNo){if(isOn){Console.WriteLine("正在切到{0}台",channelNo);}}
//测试Main()方法static void Main(String[] args){RemoteControl controler=new RemoteControl();Tv tv=new Tv();//开机controler.TurnOn(tv);//切换频道controler.ChangChannel(tv);//关机controler.TurnOff(tv);Console.ReadLine();
}相关文章:
深入.NET平台和C#编程总结大全
第一章 简单认识.NET框架 (1)首先我们得知道 .NET框架具有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework Class Library) 配图: (…...
jOOQ的使用场景
jOOQ的使用场景 jOOQ最初是作为一个库完全是JDBC和所有的数据库交互的抽象层而被创建。 在已有的软件产品中经常遇到的各种最佳实践被应用到这个库中。包含如下: 类型安全数据库对象引用,通过自动生成的模式, 表, 列,…...
Pytorch-Transformer轴承故障一维信号分类(三)
目录 前言 1 数据集制作与加载 1.1 导入数据 第一步,导入十分类数据 第二步,读取MAT文件驱动端数据 第三步,制作数据集 第四步,制作训练集和标签 1.2 数据加载,训练数据、测试数据分组,数据分batch…...
pycharm多线程报错的问题(未解决)
暂未解决! 看了一下可能是这里的问题: 根据建议,在walks之前加了 freeze_support() 但是没有效果。 关键是,在jupyter上运行是没有问题的! 未解决。...
【常用字符大全】含emoji表情
常用符号大全 ❤❥웃유♋☮✌☏☢☠✔☑♚▲♪✈✞↑↓◆◇⊙■□△▽─│♥❣♂♀☿Ⓐ✍✉☣☤✘☒♛▼♫⌘☪≈←→◈◎☉★☆⊿※¡━┃♡ღツ☼☁❅♒✎©™Σ✪✯☭➳卐√↖↗●◐Θ◤◥︻〖〗┄┆℃℉✿ϟ☃☂✄¢€£∞✫★✡↙↘○◑⊕◣◢︼【】┅┇…...
android 蓝牙开关设置
frameworks/base/packages/SettingsProvider/res/values/defaults.xml <bool name"def_bluetooth_on">false</bool>将 def_bluetooth_on 的值设为false(系统默认开启值) adb动态设置 关闭:adb shell settings put gl…...
C++ extern “C“ 用法
extern “C” 由于c中需要支持函数重载,所以c和c中对同一个函数经过编译后生成的函数名是不相同的 extern “C” 的主要作用就是为了实现c代码能够调用其他 c 语言代码。 1(不常用) //告诉编译器 show() 函数按c语言的方式进行编译和链接 extern "C" voi…...
HTML面试题---专题四
文章目录 一、前言二、如何在 HTML 中嵌入音频文件?三、解释 <script> 标签中 defer 属性的用途。四、如何在 HTML 中创建粘性/固定导航栏?五、HTML 中的 span 元素的用途是什么?六、如何使 HTML 元素可拖动?七、解释 <i…...
stm32项目(11)——基于stm32的俄罗斯方块游戏机
1.功能设计 使用stm32f103zet6平台,以及一块LCD屏幕,实现了一个俄罗斯方块游戏机。可以用按键调整方块的位置、还可以控制方块下降的速度! 2.视频演示 俄罗斯方块 3.俄罗斯方块发展史 俄罗斯方块是一种经典的拼图游戏,由苏联俄罗…...
【计算机网络基础2】IP地址和子网掩码
1、IP地址 网络地址 IP地址由网络号(包括子网号)和主机号组成,网络地址的主机号为全0,网络地址代表着整个网络。 广播地址 广播地址通常称为直接广播地址,是为了区分受限广播地址。 广播地址与网络地址的主机号正…...
ES6-import后是否有{}的区别
在ES6中,import语句用于导入其他模块中的变量、函数、类等。在使用import语句时,可以选择是否使用花括号{}来包裹导入的内容,这会影响导入的内容的使用方式。 1.使用花括号{}: 当使用花括号{}时,表示只导入指定的变量…...
rv1126-rv1109-以太网功能-eth-(原理篇)
这里只是浅浅分析一下 1.主控里面会内置mac 2.mac有组接口接到phy(网络芯片:8201) 3.phy(网络芯片:8201)接到网口 //这里就到达硬件的接口了,大致就是这个原理; 4.然后涉及到软件部分 就是mdio总线;这个总线是注册phy用的; 如果注册失败会导致网口无法使用 [ 1.002751] m…...
【IDEA】反向撤销操作快捷键 ctrl+shift+z 和搜狗热键冲突的解决办法
当我们执行某些操作时与搜狗热键冲突,直接取消搜狗的快捷键即可!!!以下以 ctrlshiftz 为例。 在输入悬浮框右键找到更多设置 按键里面找到系统功能快捷键设置 取消掉冲突的热键即可...
数据结构之----逻辑结构、物理结构
数据结构之----逻辑结构、物理结构 目前我们常见的数据结构分别有: 数组、链表、栈、队列、哈希表、树、堆、图 而它们可以从 逻辑结构和物理结构两个维度进行分类。 什么是逻辑结构? 逻辑结构是指数据元素之间的逻辑关系,而逻辑结构又分为…...
pip 通过git安装库
举例:安装peft库 git clone https://github.com/huggingface/peft.git cd peft python -m pip install . 解释: 使用git clone克隆PEFT库的代码。进入克隆的目录。使用python -m pip install .来安装PEFT库。 补充:使用pip安装到指定编译器…...
C语言——从终端输入 3 个数 a、b、c,按从大到小的顺序输出。
方式一 #include <stdio.h> int main() {int a, b, c, temp;printf("请输入三个数:\n");scanf("%d %d %d", &a, &b, &c);if (a < b) {temp a;a b;b temp;}if (a < c) {temp a;a c;c temp;}if (b < c) {temp…...
【JVM从入门到实战】(二)字节码文件的组成
一、Java虚拟机的组成 二、字节码文件的组成 字节码文件的组成 – 应用场景 字节码文件的组成部分-Magic魔数 什么是魔数? Java字节码文件中的魔数 文件是无法通过文件扩展名来确定文件类型的,文件扩展名可以随意修改,不影响文件的内容。…...
OPC UA常见故障信息代码
错误信息解释0x00000000操作成功。0x40000000值不确定,但原因不明。0x80000000值为坏,但原因不明。Bad_UnexpectedError 0x80010000发生非预期错误。Bad_InternalError 0x80020000编程或配置错误时发生内部错误。Bad_OutOfMemory 0x80030000完成操作所需…...
第20关 快速掌握K8S下的有状态服务StatefulSet
------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维,K8s是如何来管理有状态服务的呢?跟着博哥来会会它们吧! 前面我们讲到了Deployment、DaemonSet都只适合用来跑无状态的服务pod,那么这里的Statefu…...
如何使用https://www.krea.ai/来实现文生图,图生图,
网址:https://www.krea.ai/apps/image/realtime Krea.ai 是一个强大的人工智能艺术生成器,可用于创建各种创意内容。它可以用来生成文本描述的图像、将图像转换为其他图像,甚至写博客文章。 文本描述生成图像 要使用 Krea.ai 生成文本描述…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
