当前位置: 首页 > news >正文

深入.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框架 &#xff08;1&#xff09;首先我们得知道 .NET框架具有两个主要组件&#xff1a;公共语言进行时CLR&#xff08;Common Language Runtime&#xff09;和框架类库FCL&#xff08;Framework Class Library&#xff09; 配图&#xff1a; &#xff08;…...

jOOQ的使用场景

jOOQ的使用场景 jOOQ最初是作为一个库完全是JDBC和所有的数据库交互的抽象层而被创建。 在已有的软件产品中经常遇到的各种最佳实践被应用到这个库中。包含如下&#xff1a; 类型安全数据库对象引用&#xff0c;通过自动生成的模式&#xff0c; 表&#xff0c; 列&#xff0c…...

Pytorch-Transformer轴承故障一维信号分类(三)

目录 前言 1 数据集制作与加载 1.1 导入数据 第一步&#xff0c;导入十分类数据 第二步&#xff0c;读取MAT文件驱动端数据 第三步&#xff0c;制作数据集 第四步&#xff0c;制作训练集和标签 1.2 数据加载&#xff0c;训练数据、测试数据分组&#xff0c;数据分batch…...

pycharm多线程报错的问题(未解决)

暂未解决&#xff01; 看了一下可能是这里的问题&#xff1a; 根据建议&#xff0c;在walks之前加了 freeze_support() 但是没有效果。 关键是&#xff0c;在jupyter上运行是没有问题的&#xff01; 未解决。...

【常用字符大全】含emoji表情

常用符号大全 ❤❥웃유♋☮✌☏☢☠✔☑♚▲♪✈✞↑↓◆◇⊙■□△▽─│♥❣♂♀☿Ⓐ✍✉☣☤✘☒♛▼♫⌘☪≈←→◈◎☉★☆⊿※¡━┃♡ღツ☼☁❅♒✎©™Σ✪✯☭➳卐√↖↗●◐Θ◤◥︻〖〗┄┆℃℉✿ϟ☃☂✄¢€£∞✫★✡↙↘○◑⊕◣◢︼【】┅┇…...

android 蓝牙开关设置

frameworks/base/packages/SettingsProvider/res/values/defaults.xml <bool name"def_bluetooth_on">false</bool>将 def_bluetooth_on 的值设为false&#xff08;系统默认开启值&#xff09; adb动态设置 关闭&#xff1a;adb shell settings put gl…...

C++ extern “C“ 用法

extern “C” 由于c中需要支持函数重载&#xff0c;所以c和c中对同一个函数经过编译后生成的函数名是不相同的 extern “C” 的主要作用就是为了实现c代码能够调用其他 c 语言代码。 1(不常用) //告诉编译器 show() 函数按c语言的方式进行编译和链接 extern "C" voi…...

HTML面试题---专题四

文章目录 一、前言二、如何在 HTML 中嵌入音频文件&#xff1f;三、解释 <script> 标签中 defer 属性的用途。四、如何在 HTML 中创建粘性/固定导航栏&#xff1f;五、HTML 中的 span 元素的用途是什么&#xff1f;六、如何使 HTML 元素可拖动&#xff1f;七、解释 <i…...

stm32项目(11)——基于stm32的俄罗斯方块游戏机

1.功能设计 使用stm32f103zet6平台&#xff0c;以及一块LCD屏幕&#xff0c;实现了一个俄罗斯方块游戏机。可以用按键调整方块的位置、还可以控制方块下降的速度&#xff01; 2.视频演示 俄罗斯方块 3.俄罗斯方块发展史 俄罗斯方块是一种经典的拼图游戏&#xff0c;由苏联俄罗…...

【计算机网络基础2】IP地址和子网掩码

1、IP地址 网络地址 IP地址由网络号&#xff08;包括子网号&#xff09;和主机号组成&#xff0c;网络地址的主机号为全0&#xff0c;网络地址代表着整个网络。 广播地址 广播地址通常称为直接广播地址&#xff0c;是为了区分受限广播地址。 广播地址与网络地址的主机号正…...

ES6-import后是否有{}的区别

在ES6中&#xff0c;import语句用于导入其他模块中的变量、函数、类等。在使用import语句时&#xff0c;可以选择是否使用花括号{}来包裹导入的内容&#xff0c;这会影响导入的内容的使用方式。 1.使用花括号{}&#xff1a; 当使用花括号{}时&#xff0c;表示只导入指定的变量…...

rv1126-rv1109-以太网功能-eth-(原理篇)

这里只是浅浅分析一下 1.主控里面会内置mac 2.mac有组接口接到phy(网络芯片:8201) 3.phy(网络芯片:8201)接到网口 //这里就到达硬件的接口了,大致就是这个原理; 4.然后涉及到软件部分 就是mdio总线;这个总线是注册phy用的; 如果注册失败会导致网口无法使用 [ 1.002751] m…...

【IDEA】反向撤销操作快捷键 ctrl+shift+z 和搜狗热键冲突的解决办法

当我们执行某些操作时与搜狗热键冲突&#xff0c;直接取消搜狗的快捷键即可&#xff01;&#xff01;&#xff01;以下以 ctrlshiftz 为例。 在输入悬浮框右键找到更多设置 按键里面找到系统功能快捷键设置 取消掉冲突的热键即可...

数据结构之----逻辑结构、物理结构

数据结构之----逻辑结构、物理结构 目前我们常见的数据结构分别有&#xff1a; 数组、链表、栈、队列、哈希表、树、堆、图 而它们可以从 逻辑结构和物理结构两个维度进行分类。 什么是逻辑结构&#xff1f; 逻辑结构是指数据元素之间的逻辑关系&#xff0c;而逻辑结构又分为…...

pip 通过git安装库

举例&#xff1a;安装peft库 git clone https://github.com/huggingface/peft.git cd peft python -m pip install . 解释&#xff1a; 使用git clone克隆PEFT库的代码。进入克隆的目录。使用python -m pip install .来安装PEFT库。 补充&#xff1a;使用pip安装到指定编译器…...

C语言——从终端输入 3 个数 a、b、c,按从大到小的顺序输出。

方式一 #include <stdio.h> int main() {int a, b, c, temp;printf("请输入三个数&#xff1a;\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魔数 什么是魔数&#xff1f; Java字节码文件中的魔数 文件是无法通过文件扩展名来确定文件类型的&#xff0c;文件扩展名可以随意修改&#xff0c;不影响文件的内容。…...

OPC UA常见故障信息代码

错误信息解释0x00000000操作成功。0x40000000值不确定&#xff0c;但原因不明。0x80000000值为坏&#xff0c;但原因不明。Bad_UnexpectedError 0x80010000发生非预期错误。Bad_InternalError 0x80020000编程或配置错误时发生内部错误。Bad_OutOfMemory 0x80030000完成操作所需…...

第20关 快速掌握K8S下的有状态服务StatefulSet

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维&#xff0c;K8s是如何来管理有状态服务的呢&#xff1f;跟着博哥来会会它们吧&#xff01; 前面我们讲到了Deployment、DaemonSet都只适合用来跑无状态的服务pod&#xff0c;那么这里的Statefu…...

​如何使用https://www.krea.ai/来实现文生图,图生图,

网址&#xff1a;https://www.krea.ai/apps/image/realtime Krea.ai 是一个强大的人工智能艺术生成器&#xff0c;可用于创建各种创意内容。它可以用来生成文本描述的图像、将图像转换为其他图像&#xff0c;甚至写博客文章。 文本描述生成图像 要使用 Krea.ai 生成文本描述…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...