深入.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 生成文本描述…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
P10909 [蓝桥杯 2024 国 B] 立定跳远
# P10909 [蓝桥杯 2024 国 B] 立定跳远 ## 题目描述 在运动会上,小明从数轴的原点开始向正方向立定跳远。项目设置了 $n$ 个检查点 $a_1, a_2, \cdots , a_n$ 且 $a_i \ge a_{i−1} > 0$。小明必须先后跳跃到每个检查点上且只能跳跃到检查点上。同时࿰…...
Electron简介(附电子书学习资料)
一、什么是Electron? Electron 是一个由 GitHub 开发的 开源框架,允许开发者使用 Web技术(HTML、CSS、JavaScript) 构建跨平台的桌面应用程序(Windows、macOS、Linux)。它将 Chromium浏览器内核 和 Node.j…...
Asp.net Core 通过依赖注入的方式获取用户
思路:Web项目中,需要根据当前登陆的用户,查询当前用户所属的数据、添加并标识对象等。根据请求头Authorization 中token,获取Redis中存储的用户对象。 本做法需要完成 基于StackExchange.Redis 配置,参考:…...
