深入.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();
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214557.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214557.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214557.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JSON

JSON指的是 JavaScript 對象表示法&#xff08;JavaScript Object Notation&#xff09; javascript對象&#xff1a;javascript中&#xff0c;除開JavaScript原始值(字符串&#xff0c;數字&#xff0c;布爾值&#xff0c;null&#xff0c;正則表達式)的都是javascript對象 JS…

Java - JVM內存區域的劃分

Java 程序運行時&#xff0c;需要在內存中分配空間。為了提高運算效率&#xff0c;就對空間進行了不同區域的劃分&#xff0c;因為每一片區域都有特定的處理數據方式和內存管理方式。 分配&#xff1a;通過關鍵字new創建對象分配內存空間&#xff0c;對象存在堆中。 釋放 &…

柔性數組詳解

前言&#xff1a;柔性數組是C99中新添加的概念&#xff0c;它是結構體里面的最后一個成員&#xff0c;因為它的大小未知&#xff0c;所以很靈活&#xff0c;稱之為柔 1 柔性數組占不占結構體的空間呢&#xff1f; 不占 typedef struct Stu {char y;int x;int arr[];//有些編譯器…

數據在內存中的存儲(整型篇)

1.辨析原碼反碼補碼&#xff1a; 1.原碼&#xff1a;有32位&#xff08;int類四個字節&#xff0c;一個字節八個比特位&#xff09;&#xff0c;第一位是符號位&#xff0c;0正1負&#xff0c;其余為二進制位。 2.計算一般是對原碼進行計算&#xff0c;但在負數計算使用原碼會導…

強化學習(二)——Dueling Network(DQN改進)

與DNQ相比&#xff0c;使用優勢函數(A函數)和狀態價值函數&#xff08;V&#xff09;代替之前的Q(動作價值)函數&#xff0c; 最核心公式為 Q ? ( s , a ) A ? ( s , a ) V ? ( s ) ? max ? a A ? ( s , a ) Q^*(s,a)A^*(s,a)V^*(s)-\max_a A^*(s,a) Q?(s,a)A?(s,a)V…

高效利用內存資源之動態內存管理詳解

目錄 一、為什么存在動態內存分配 二、動態內存函數的介紹 2.1malloc 2.2free 2.3calloc 2.4realloc 三、常見的動態內存錯誤 3.1對NULL指針的解引用操作 3.2對動態開辟空間的越界訪問 3.3對非動態開辟內存使用free釋放 3.4使用free釋放一塊動態開辟內存的一部分 3.…

Spring Boot 3 集成 Druid 連接池詳解

在現代的Java應用中&#xff0c;使用一個高效可靠的數據源是至關重要的。Druid連接池作為一款強大的數據庫連接池&#xff0c;提供了豐富的監控和管理功能&#xff0c;成為很多Java項目的首選。本文將詳細介紹如何在Spring Boot 3項目中配置數據源&#xff0c;集成Druid連接池&…

【ACM獨立出版、確定的ISBN號】第三屆密碼學、網絡安全和通信技術國際會議(CNSCT 2024)

第三屆密碼學、網絡安全和通信技術國際會議&#xff08;CNSCT 2024&#xff09; 2024 3rd International Conference on Cryptography, Network Security and Communication Technology 隨著互聯網和網絡應用的不斷發展&#xff0c;網絡安全在計算機科學中的地位越來越重要&…

Android Kotlin 泛型:強大的類型抽象和重用利器

一、什么是泛型&#xff1f; 泛型是一種參數化類型的機制&#xff0c;它允許我們在定義類、接口和方法時使用類型參數&#xff0c;從而實現代碼的重用和類型安全。通過使用泛型&#xff0c;我們可以將類型作為參數傳遞給類或方法&#xff0c;在不同的場景中實現靈活的類型適配…

精選:免費且高效的郵件營銷軟件推薦

好用的郵件營銷軟件可以幫助企業獲取客戶、維系客戶關系。對于有想做郵件營銷想法&#xff0c;但是想先試試的企業來講&#xff0c;免費版郵件營銷軟件就是個不錯的選擇。當然&#xff0c;免費的郵件郵件營銷軟件雖然在價格上有極大的優勢&#xff0c;但是功能上會有各種限制。…

Java生態系統最受歡迎的工具類使用指南 ?

???? 博主貓頭虎(????)帶您 Go to New World??? ?? 博客首頁——????貓頭虎的博客?? ?? 《面試題大全專欄》 ?? 文章圖文并茂??生動形象??簡單易學!歡迎大家來踩踩~?? ?? 《IDEA開發秘籍專欄》 ?? 學會IDEA常用操作,工作效率翻倍~?? ?…

【小白專用】MySQL查詢數據庫所有表名及表結構其注釋

一、先了解下INFORMATION_SCHEMA 1、在MySQL中&#xff0c;把INFORMATION_SCHEMA看作是一個數據庫&#xff0c;確切說是信息數據庫。其中保存著關于MySQL服務器所維護的所有其他數據庫的信息。如數據庫名&#xff0c;數據庫的表&#xff0c;表欄的數據類型與訪問權 限等。在INF…

網絡安全——SSH密碼攻擊實驗

一、實驗目的要求&#xff1a; 二、實驗設備與環境&#xff1a; 三、實驗原理&#xff1a; 四、實驗步驟&#xff1a;? 五、實驗現象、結果記錄及整理&#xff1a; 六、分析討論與思考題解答&#xff1a; 一、實驗目的要求&#xff1a; 1、了解SSH密碼攻擊、FTP密碼攻擊…

【BEV感知 EA-LSS 方案】Edge-aware Lift-splat-shot

前言 本文分享LSS方案的改進方案——EA-LSS,它解決了“深度跳變”問題,提出了一個新框架Edge-aware Lift-splat-shot 。 適用于“多視圖轉BEV”,可以代替原來的LSS模塊,并有效地提高了檢測精度,而推理時間的增加很少。 在nuScenes測試集上驗證,純相機模型或多模態模型…

Jmeter 請求簽名api接口-BeanShell

Jmeter 請求簽名api接口-BeanShell 項目簽名說明編譯擴展jar包jmeter 使用 BeanShell 調用jar包中的簽名方法 項目簽名說明 有簽名算法的api接口本地不好測試&#xff0c;使用BeanShell 擴展jar 包對參數進行簽名&#xff0c;接口簽名算法使用 sha512Hex 算法。簽名的說明如下…

Mybatis是如何進行分頁的?

程序員的公眾號&#xff1a;源1024&#xff0c;獲取更多資料&#xff0c;無加密無套路&#xff01; 最近整理了一份大廠面試資料《史上最全大廠面試題》&#xff0c;Springboot、微服務、算法、數據結構、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、數據庫等等 …

Django系列之Celery異步框架+RabbitMQ使用

在Django項目中&#xff0c;如何集成使用Celery框架來完成一些異步任務以及定時任務呢&#xff1f; 1. 安裝 pip install celery # celery框架 pip install django-celery-beat # celery定時任務使用 pip install django-celery-results # celery存儲結果使用2. Django集成…

gin投票系統3

對應視頻v1版本 1.優化登陸接口 將同步改為異步 原login前端代碼&#xff1a; <!doctype html> <html lang"en"> <head><meta charset"utf-8"><title>香香編程-投票項目</title> </head> <body> <m…

開關量防抖濾波器(梯形圖和SCL源代碼)

模擬量防抖超限報警功能塊請查看下面文章鏈接: https://rxxw-control.blog.csdn.net/article/details/133969425https://rxxw-control.blog.csdn.net/article/details/133969425 1、開關量防抖濾波器 2、防抖濾波 3、梯形圖代碼

useMemo和useCallback

useMemo和useCallback是React中的兩個優化性能的鉤子&#xff08;Hooks&#xff09;。它們都可以用來緩存計算結果&#xff0c;避免在每次渲染時都重新執行耗時的操作。然而&#xff0c;它們的主要區別在于緩存的內容和使用場景。 useMemo useMemo用于緩存那些計算成本較高的值…