Time of Update: 2018-12-04
1、與所有的 out 參數一樣,在使用數群組類型的 out 參數前必須先為其賦值,即必須由接受方為其賦值。例如:public static void MyMethod(out int[] arr) { arr = new int[10]; // 數組arr的明確委派}2、與所有的 ref 參數一樣,數群組類型的 ref 參數必須由調用方明確賦值。因此不需要由接受方明確賦值。可以將數群組類型的 ref 參數更改為調用的結果。例如,可以為數組賦以 null
Time of Update: 2018-12-04
文章目錄 一、對內的分配 二、虛擬記憶體 三、記憶體的使用 四、記憶體bug
Time of Update: 2018-12-04
C#語言有兩種不同的常量機制:一種為編譯時間 (compile-time)常量,一種為運行時(runtime)常量。兩種常量有著非常迥異的行為,使用不正確會導致程式的效能下降或者出現錯誤。這 兩種代價,哪一個都沒有人願意承擔,但是如果必須承擔一個,那麼“慢、但是能夠正確啟動並執行”程式總比“快、但是可能出錯的”程式要好。因此,我們說運行時 常量優於編譯時間常量。編譯時間常量比運行時常量稍微快一點,但卻缺乏靈活性。只有在效能非常關鍵,並且其值永遠不會改變的情況下,我們才應該使用編譯時間常
Time of Update: 2018-12-04
C#是一門強型別語言。一般情況下,我們最好避免 將一個類型強制轉換為其他類型。但是,有時候運行時類型檢查是無法避免的。相信大家都寫過很多以System.Object類型為參數的函數,因為. NET架構預先為我們定義了這些函數的簽名。在這些函數內部,我們經常要把那些參數向下轉型為其他類型,或者是類,或者是介面。對於這種轉型,我們通常有 兩種選擇:使用as操作符,或者使用傳統C風格的強制轉型。另外還有一種比較保險的做法:先使用is來做一個轉換測試,然後再使用as操作符或者強制轉
Time of Update: 2018-12-04
具有常量性的類型很簡單,它們自建立後便保持不 變。如果在構造的時候就驗證了參數的有效性,我們就可以確保從此之後它都處於有效狀態。因為我們不可能再更改其內部狀態。通過禁止在構建對象之後更改對 象狀態,我們實際上可以省卻許多必要的錯誤檢查。具有常量性的類型同時也是安全執行緒的:多個reader可以訪問同樣的內容。因為如果內部狀態不可能改 變,那麼不同線程也就沒有機會獲得同一資料的不同值。具有常量性的類型也可以安全地暴露給外界,因為調用者不可能改變對象的內部狀態。具有常量性的類型在
Time of Update: 2018-12-04
實值型別還是參考型別?結構還是類?如何正確地使用它們?這裡不是C++,在那裡,所有的類型都被我們定義為實值型別,然後我們可以選擇建立它們的引用形式。這也不是Java,在那裡,所有的類型都是參考型別[9]。 在C#中,我們必須在設計類型的時候就決定類型執行個體的行為。這種決定非常重要。我們必須清楚這種決定的後果,因為後期的更改會導致許多代碼在不經意間出現
Time of Update: 2018-12-04
System.Object.ToString ()恐怕是.NET中最常用的方法了。應該為我們的類的所有客戶代碼提供一個合理的版本,否則這些代碼就只能使用我們的類的一些屬性來自己定製可讀的表示 了。類型的字串表示非常有用,可以在很多地方向使用者顯示對象的有關資訊,例如在Windows Forms上、Web Forms上、控制台輸出視窗中,以及調試環境中。為此,我們建立的每一個類型都應該重寫Object類的ToString()方法。如果建立的是更複雜
Time of Update: 2018-12-04
#if/#endif 條件編譯常用來由同一份原始碼產生不同的結果檔案,最常見的有debug版和release版。但是,這些工具在具體應用中並不是非常得心應手,因為它們 太容易被濫用了,使用它們建立的代碼通常都比較難理解,且難以調試。C#語言的設計者們對這種問題的解決方案是建立更好的工具,以達到為不同環境建立不同 機器碼的目的。C#為此添加了一個Conditional特性,該特性可以標示出某種環境設定下某個方法是否應該被調用。使用這種方式來描述條件編譯要比
Time of Update: 2018-12-04
目的:在RichTextBox中顯示多個人的聊天記錄,每個人的話用不同顏色的文本顯示。實現方法: public void disply(RichTextBox rtBox, string strInput, Color fontColor, Color backColor) { rtBox.AppendText(strInput + "/r/n"); int p1 = rtBox.Text.IndexOf(strInput)
Time of Update: 2018-12-04
常用的C#Regex! 文章來源: 視點設計 8see.net http://blog.8see.net/"^/d+$" //非負整數(正整數 + 0) "^[0-9]*[1-9][0-9]*$" //正整數 "^((-/d+)|(0+))$" //非正整數(負整數 + 0) "^-[0-9]*[1-9][0-9]*$" //負整數 "^-?/d+$" //整數 "^/d+(/./d+)?$" //非負浮點數(正浮點數 + 0) "^(([0-9]+/.[0-9]*[1-9][0-9]*)|([
Time of Update: 2018-12-04
取得裝置網卡的MAC地址和硬碟的卷標號using System;using System.Management;namespace NetCard{ /// /// 讀取裝置 /// public class run { private ManagementClass mc; private ManagementObjectCollection moc; private ManagementObject disk;
Time of Update: 2018-12-04
一、弄清結構再動手 要想輕鬆的抽取RSS資訊,自然先要瞭解它的結構,所謂“知己知彼,百戰不殆”嘛。
Time of Update: 2018-12-04
// ...... using System.ServiceProcess; // ...... /// <summary> /// Restart windows service /// </summary> /// <param name="serviceName">the windows service display name</param> ///
Time of Update: 2018-12-04
以前用過的,總結下,以免忘記了,也給廣大網友一個參考:1. C# winform DataGridView 添加行號private void GridView1_Paint(object sender, PaintEventArgs e) { int irowcount = this.GridView1.DisplayedRowCount(true); if (irowcount == 0) return;
Time of Update: 2018-12-04
.NET系統的預設初始化機制會將所有的對象設定為0[14]。對於實值型別來講,我們無法阻止其他程式員將其所有的成員都初始化為0[15]。因此,我們應該將0作為實值型別的預設值。枚舉類型就是一種典型的情況。我們建立的枚舉類型決不應該將0視為無效狀態。我們知道,所有的枚舉類型都繼承自System.ValueType。預設的枚舉值從0開始,但是我們可以更改這種預設行為。public enum Planet{ // 顯式賦值。 // 否則將預設從0開始。 Mercury = 1, Venus =
Time of Update: 2018-12-04
快速(二分法)排序的思想是將數組劃分為兩邊,以某個節點v為界(設這個節點的值為 v),在節點v左邊的所有元素都小於 v, 在節點v右邊的所有元素都大於v.這樣不停地劃分,到最後整個數組就是有序的了。 具體分成兩邊的思路為(起始下標為start, 結束下標為 end):選擇v = a[end]作為中介點先從start開始掃描,遇到a[++i] < v停下來,接著從end開始掃描a[--j] >
Time of Update: 2018-12-04
來自 C#中遍曆各類資料集合的方法,這裡自己做下總結: 1.枚舉類型//遍曆枚舉類型Sample的各個枚舉名稱foreach (string sp in Enum.GetNames(typeof(Sample))){ary.Add(sp);}//遍曆枚舉類型Sample的各個枚舉值foreach (string sp in
Time of Update: 2018-12-04
1. 類型clock_t: 是個long型,用來記錄一段時間內的時鐘計時單元數,即CPU的運行單元時間。size_t: 標準C庫中定義的,應為unsigned int,在64位系統中為long unsigned int。time_t: 從1970年1月1日0時0分0秒到該時間點所經過的秒數。struct tm { int tm_sec; /* 秒 – 取值區間為[0,59] */ int tm_min; /* 分 - 取值區間為[0,59] */ int
Time of Update: 2018-12-04
// void *memcpy(void *dest, const void *src, size_t count);// errno_t memcpy_s(void *dest, size_t numberOfElements, const void *src, size_t count);void test_memcpy_string(){char *s = "Golden Global View";char d1[19], d2[10], d3[19], d4[10];// 1.
Time of Update: 2018-12-04
一,單獨編譯 1)請不要將函數定義或變數聲明放到標頭檔中。 原因:一個標頭檔中包含一個函數定義,然後其他兩個檔案(同屬於一個程式)包含該標頭檔,則同一個程式中將包含同一個函數定義。除非函數是內聯的(inline),否則將出錯。 2)將結構放在標頭檔中是可以的。因為它們不建立變數。 3)標頭檔寫法: “main.h” 標頭檔包含在雙引號中則編譯器首先尋找當前的工作目錄。