1. 程式人生 > >《C#入門經典》再次閱讀時的讀書筆記(一)

《C#入門經典》再次閱讀時的讀書筆記(一)

第1章 C#簡介

1.Net Framework是Microsoft為開發應用程式而建立的一個富有革命性的新平臺,它可以建立Windows應用程式,Web應用程式,Web服務和其他各種型別的應用程式.

2.編譯.Net Framework庫的程式碼時,先將其編譯為MSIL(Microsoft Intermediate Language),再由Just-In-Time(JIT)編譯器編譯為本地機器程式碼.MSIL中間語言程式碼僅在需要時才編譯.

3.程式集包括可執行應用程式檔案(.exe)和其他應用程式使用的庫(.dll).
  程式集還包含元資訊(即程式集中包含的資料的資訊,也稱元資料)和可選的資源(MSIL 使用的其他資料,如聲音檔案和圖片).元資訊允許程式集是自描述的,因此不需要其他資訊就可以使用程式集.

4.在CLR控制之下執行的應用程式是託管的,CLR(Common Language Runtime)管理著應用程式,其方式是管理記憶體,處理安全性,以及允許進行跨語言除錯.

5..Net的垃圾自動回收機制會頻繁檢查計算機記憶體,從中刪除不再需要的內容.

第三章 變數和表示式

1.使用#region和#endregion定義可以擴充套件和收縮的程式碼區域的開頭和結尾.

2..Net Framework名稱空間的兩種命名規定:PascalCase約定每個單詞的第一個字母大寫,其他的小寫,camelCase約定第一個單詞以小寫字母開頭.Microsoft建議對於簡單變數使用camelCase規則,而比較高階的命名則使用PacalCase.

3.逐字地指定字串即在該字串前面加一個@字元.
  字串是引用型別,所以字串可以賦null值,表明字串變數不引用字串.

4.名稱空間是.Net中提供應用程式程式碼容器的方式,這樣就可以惟一地標識程式碼及其內容.

第4章 流程控制

1.使用&&和||運算子來代替&和|,效能會有一定的提高,因為&&運算子只要第一個運算元為False就不考慮第二個運算元的取值了,同樣如果第一個運算元為True,||運算子無需考慮第二個運算元的取值.

第5章 變數的更多內容

1.型別轉換
  隱式轉換:從型別A到型別B的轉換可以在所有的情況下進行,執行轉換的規則非常簡單,可以讓編譯器進行.任得型別A,只要其取值範圍包含在型別B的取值範圍內,就可以隱式轉換為型別B.
  顯式轉換:從型別A到型別B轉換隻能在某些情況下進行,轉換的規則比較複雜,應進行某種型別的處理.

2.列舉定義
  enum typename
  {
     value1,
     value2,
     value3
     ...
     valuen
  }

3.結構體定義
  struct <typename>
  {
    <memberDeclaration>
  }

4.一維陣列: <basetype>[] <name>;
  int[] myIntArray = {1, 2, 3, 4, 5};
  int[] myIntArray = new int[5]={1, 2, 3, 4, 5};
  二維陣列: <basetype>[,] <name>;
  double[,] hillHeight = {{1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 5}};
  double[,] hillHeight = new double[3,4];

5.陣列的陣列:陣列的元素是陣列
 jaggedIntArray = new int [2][];
 jaggedIntArray[0] = new int[3];
 jaggedIntArray[1] = new int[4];
 或 jaggedIntArray = new int[3][]{new int[] {1, 2 ,3}, new int[] {1}, new int[] {1,2}};
 或 int[][] jaggedIntArray = {new int[] {1, 2, 3}, new int[] {1}, new int[] {1, 2}};

6.<string>.ToCharArray(): string型別轉換為char[]陣列
  <string>.ToLower(), <string>.ToUpper(): 轉換為小寫或大寫字母
  <string>.TrimStart, <string>.TrimEnd(): 刪除字串前面或後面的空格
  <string>.PadLeft(), <string>.PadRight(): 在字串前面或後面加指定個數的空格或字元(char)
  <string>.Split(): string型別轉換為string[]陣列,以char[]陣列為分隔符

第6章 函式
1.函式定義
  引數陣列:放在函式的最後一個引數定義,它可以使用個數不定的引數來呼叫函式,使用params關鍵字定義.   
  static <reutrntype> <functionname>(<paramType> <paramName>, ... ,
                                     params <type>[] <name>)
  {
    ...
    return <returnvalue>;
  }

2.ref與out關鍵字
  兩者都可以按引用傳遞返回變數的值.把未賦值的變數用作ref引數是非法的,但可以把未賦值的變數用作out引數.此外,函式在使用out引數時,該引數必須看作是還未賦值,即呼叫程式碼可以把已賦值的變數用作out引數,儲存在該變數中值會在函式執行時會丟失.在函式呼叫時必須使用ref或out關鍵字.

3.在控制檯應用程式中,定義全域性變數必須使用static或const關鍵字,static允許修改變數的值,const不允許修改變數的值.如果區域性變數與全域性變數同名,全域性變數就會被遮蔽.

4.宣告一個變數並不會分配記憶體,只有給變數賦值後才會分配記憶體,如果變數定義後未賦初值而在迴圈內部賦值
,則該變數的作用域只在迴圈內部使用.一般情況最好在宣告和初始代所有變數後,再在程式碼塊中使用它們.

5.Main()函式的四種形式
  static void Main()
  static void Main(string[] args)
  static int Main()
  static int Main(string[] args)
  args用於從命令列接受引數

6.在結構體中定義的函式稱為結構函式,結構函式可以訪問結構體中所有的變數,結構函式不需要static關鍵字修飾.

7.函式過載:允許建立同名的多個函式,但這些函式使用不同的引數型別.

8.委託:委託的宣告指定了一個函式簽名,其中包含一個返回型別和引數列表.可以使用委託型別的變數來呼叫函式.此外還可以把委託變數作為引數傳遞給函式,這樣就可以使用委託呼叫它引用的任何函式,而且在執行之前無需知道呼叫的是哪個函式.
  delegate double ProcessDelegate(double param1, double param2);
  static void executeFunction(ProcessDelegate process);
  {
    process(2.2, 3.3);
  }

第7章 除錯和錯誤處理

1.Debug目錄下的.pdb檔案為編譯後的機器碼程式.

2.輸出除錯資訊
  Debug模式下輸出:
  Debug.WriteLine();  Debug.Write(); Debug.WriteLineIf(): 條件為True時才輸出.
  Release模式下輸出:
  Trace.WriteLine(); Trace.Write(); Trace.WriteLineIf(): 條件為True時才輸出.
  要使用以上函式,必須宣告名稱空間:using System.Diagnostics;
  輸出除錯資訊的兩種方法: 
  診斷輸出:總是要從應用程式中輸出除錯結果時使用這種方法,尤其是要輸出的字串比較複雜,涉及幾個變數或許多資訊的情況下,使用該方法比較好.另外,要在釋出模式下獲得執行應用程式的除錯結果,Trace命令是惟一的選擇.
  跟蹤點(斷點):希望快速輸出重要資訊,以便解決語義錯誤,應使用跟蹤點.

3.斷點是原始碼中自動進入中斷模式的一個標記,它可以配置為:
  1)遇到斷點時立即進入
  2)遇到斷點時,如果布林表示式的值為True,則進入中斷模式
  3)遇到某斷點一定的次數後進入中斷模式
  4)遇到斷點時,如果自從上次遇到斷點以來變數的值發生了變化,就進入中斷模式.
  5)把文字輸出到除錯視窗中,或者執行一個巨集.

4.進入中斷模式的另外兩種方式:一是在產生一個未處理的異常時選擇進入該模式;二是生成一個判定語句時中斷.判定函式有兩個版本:Debug.Assert()和Trace.Assert().遇到判定語句時選擇Abort中斷應用程式的執行,選擇Retry進入中斷模式.
  Assert()函式帶三個引數,第一個引數為false時觸發判定語句,第二,三個引數分別把資訊寫到彈出的對話方塊和輸出視窗中.

5.try
  {
     ...
  }
  catch (<exception e>)
  {
     ...
  }
  finally
  {
    ...
  }
  可以只有try塊和finally塊,而沒有catch塊,或者有一個try塊和好幾個catch塊.如果有一個或多個catch塊,則finally塊是必須的.異常發生時,選擇一個匹配的異常(catch塊)執行,如果沒有找到匹配的異常則選擇預設的catch塊執行,finally塊是總是要執行的.在catch塊中再次丟擲異常使用throw,此時先執行當前異常塊中finally塊再返回上級程式碼處理.

相關推薦

《代碼閱讀讀書筆記

需求 的人 一行 編碼 重要 流動 使用 分析 缺少 《代碼閱讀》讀書筆記(一) 《代碼閱讀》(《Code Reading The Open Source Perspective》)Diomidis Spinellis 著 ---------------------

C#從現象到本質》讀書筆記

托管代碼 操作 擁有 底層 不同 使用 子集 存在 基於 最近根據博客園大神的推薦,買了本《C#從現象到本質》。做一點讀書筆記。 由於不懂IL和ldsdm,winddg,太深奧,理解不了,就牛嚼草一樣,先總結第一遍讀書,自己總結的知識點了。不知道這樣會不會侵權,如果侵權了,

SQL入門經典(第5版)學習筆記

1.縮寫“SQL”的含義是什麼?stuctured query language 結構化查詢語言 2.SQL命令的6個主要類別是什麼?事務控制命令 commit 資料定義語言 create table 資料操作語言 update 資料查詢語言 select 資料管理命令(進行審計分析 start audit

C#入門經典再次閱讀讀書筆記

第1章 C#簡介 1.Net Framework是Microsoft為開發應用程式而建立的一個富有革命性的新平臺,它可以建立Windows應用程式,Web應用程式,Web服務和其他各種型別的應用程式. 2.編譯.Net Framework庫的程式碼時,先將其編譯為MSIL(M

深度探索C++對象模型讀書筆記

復雜 理解 image play 基礎上 isp 靜態 布局 bject 《深度探索C++對象模型》這本書也算是學習C++面向對象編程的必備書了,打算花上幾天先簡單的看一遍,這種書看上好幾遍也不一定能理解太多,慢慢積累一點一滴吃透就好。下面把我看書過程中覺得比較有意義的摘錄

C陷阱與缺陷讀書筆記

之間 之前 符號 雙引號 陷阱 數組 調用 筆記 如果 第一章 1.2 按位運算符:& 邏輯運算符:&& 1.3 單字符符號:只有一個字符長 多字符符號:含多個字符

SQL入門經典(第5版)學習筆記

1.判斷對錯:個人社會保險號碼,輸入格式為 '1111111111',它可以是下面任何一種資料型別:定長字元、變長字元、數值。錯 不能是數值 引號會轉換為字元 2.判斷對錯:數值型別的標度是指數值的總體長度。對 會自動補全 3.所有的SQL實現都使用同樣的資料型別嗎?不同 按需使用 4.下面定義的有效位

SQL入門經典(第5版)學習筆記

1.下面這個CREATE TABLE命令能夠正常執行嗎?需要做什麼修改?在不同的資料庫(MySQL、Oracle、SQL Server)中執行,有什麼限制嗎? 不要as: middle_name null 2.能從表裡刪除一個欄位嗎?可以 alter drop coloum?? 3.在前面的表EMP

《SpringBoot實戰第四版》讀書筆記-- 入門

1、SpringBoot最重要的四個核心:自動配置、起步依賴、命令列介面、Actuator(Springboot提供對應用系統的自省和監控的整合功能,可以對應用系統進行配置檢視、相關功能統計等)。     Springboot自動配置消除了傳統Spring應用程式中的很多樣板

《深度探索C++物件模型》讀書筆記

Lippman早期在貝爾實驗室,和C++發明者Bjarne Stroustrup設計了全世界第一套C++編譯器cfront,還著有經典的C++入門書Ensential C++和C++ Primer。 全書基本以cfront的設計方法為基礎,討論編譯器如何處理C

《Effictive C++》讀書筆記

一.讓自己習慣C++ 1.      視C++為一個語言集合: C語言基礎,面向物件部分,Template,STL。C++感覺好博大精深,現在貌似還是第二個階段,想起剛學C++那會兒,一直用著C++的語法,寫著面向過程的程式碼,實在是囧啊… 2.      儘量以con

unity 5.x從入門到精通 讀書筆記

transform 場景 engine class 遊戲 iou 遊戲制作 初始化 bsp 《unity 5.x從入門到精通》前四章是一些Unity的情況介紹,第五章開始介紹Unity的基礎操作,第六章通過一個3D場景的實現介紹了3D遊戲制作模式的基本操作。

《程式碼揭祕--從C/C++的角度探祕計算機系統》讀書筆記

最近在看左飛哥的一本書:《程式碼揭祕--從C/C++的角度探祕計算機系統》。我覺得寫得很好,下面是書中的一小段程式,經過我修改。 #include <iostream> using namespace std; int main(void) { char

《Visual c++從初學到精通》讀書筆記2

第二部分----從程式碼例子的角度來分析mfc架構及windows程式設計 1、windows api程式設計 <span style="font-size:14px;"><strong>#include <windows.h> #in

Head First C 讀書筆記

一段程式碼: #include <stdio.h> int main(){ char cards[] = "JQK";//editable, copy is in stack //

MySQL資料庫入門--讀書筆記

第一章 SQL語言: 資料定義語言: create語句     :建立資料庫、資料表等 alter語句        :修改表的定義 drop語句        :刪除資料庫、刪除表等 資料操作語言: insert語句      :插入資料 update語句    :修改資

C++primer讀書筆記

1.endl操縱符  效果:結束當前行,並將與裝置關聯的緩衝區(buffer)中的內容刷到裝置中。緩衝重新整理操作可以保證到目前為止程式所產生的所有輸出都真正寫入輸出流中,而不是僅停留在記憶體中等待寫入輸入流。//在除錯時新增列印語句,這類語句應該保證“一直”重新整理流。否則

Objective-C高階程式設計 iOS與OS X多執行緒和記憶體管理 讀書筆記

1.2.2 記憶體管理原則: 自己生成的物件,自己所持有 非自己生成的物件,自己也能持有 不再需要自己持有的物件時釋放 非自己持有的物件無法釋放 自己生成的物件,自己所持有 //自己生成並持有物件 id obj = [[NSObject alloc] init]; //自己持有物件   

SICP讀書筆記

自由 運用 實參 隱藏 更多 定義 並不是 謂詞 精確 第一章 構造過程抽象 計算過程是存在於計算機裏的一類抽象事物,它在演化過程中會去操作一些被稱為數據的抽象事物。我們通過創建被稱為程序的規則模式來指導這類過程的進行。程序由程序設計語言編排而成。 我們將要使用Lisp

崔華基於oracle的SQL優化讀書筆記如何得到真實的執行計劃

hash mes getting binary oracl only 中文 fun roc ---恢復內容開始--- 得到目標SQL的執行計劃,大致有以下四種方式: 1.explain plan 命令 2.DBMS_XPLAN包 3.SQLPLUS中的autotrace開關