Time of Update: 2015-09-28
標籤:今天在園子裡看到一個關於C#中對於可空類型的描述的文章,感覺不錯於是自己寫了個小例子嘗試下。 在C#中,對於可空類型描述為:Nullable<T>, 它表示該類型是可以為空白的一個類型。它被定義為一個結構(struct)而非一個類(class)... 在這裡用一個小Demo來看看它的用法 int? intTest; int? nullIntValue = new Nullable<int>();
Time of Update: 2015-09-28
標籤:一、前言觀察者模式也叫發布-訂閱模式。觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽一個主題對象,這個主題對象狀態發生狀態變化時,會通知所有的觀察者對象,使它們能夠自動更新自己。 什麼時候使用觀察者模式?當一個對象的改變需要同時改變其他對象的時候。二、結構圖三、執行個體代碼using System;using System.Collections.Generic;using System.Text;namespace 觀察者模式{ class
Time of Update: 2015-09-28
標籤:虛方法和覆寫方法虛方法可以使基類的引用訪問"升至"衍生類別中可以使用基類引用調用衍生類別的方法,只需滿足下面的條件衍生類別的方法和基類的方法有相同的簽名和傳回型別基類的方法使用virtual標註衍生類別的方法使用override標註 class Program { static void Main(string[] args) { MyDerivedClass derived = new MyDerivedClass();
Time of Update: 2015-09-27
標籤:C#開發中使用設定檔對象簡化配置的本地儲存0x00
Time of Update: 2015-09-27
標籤:準備工作 起因是因為這個網站:http://i.youku.com/kmsfan 這個是一個叫做冒險島的遊戲的資訊論壇,以前我經常在裡面傳視頻,現在我不玩這個遊戲了,但是很多玩家還是經常到我的網站裡面去看視頻,所以我覺得有點不好意思,我覺得開發出一款自動上傳下載的工具比什麼都好,也不耽誤我時間。需要準備一些外掛程式,這些外掛程式都可以從Nuget裡面找到,比如Newtonsoft.Json啊HtmlAgilityPack
Time of Update: 2015-09-27
標籤:一、前言命令模式將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化,另外對請求排隊或記錄請求日誌,以及支援可撤銷的操作。二、結構圖 三、執行個體代碼namespace 命令模式{ class Program { static void Main(string[] args) { //開店前的準備 Barbecuer boy = new Barbecuer();
Time of Update: 2015-09-27
標籤:C#變數初始化是C#強調安全性的另一個例子。簡單地說,C#編譯器需要用某個初始值對變數進行初始化,之後才能在操作中引用該變數。大多數現代編譯器把沒有初始化標記為警告,但C#編譯器把它當作錯誤來看待。這就可以防止我們無意中從其他程式遺留下來的記憶體中擷取垃圾值。C#變數初始化的操作中有兩個方法可確保變數在使用前進行了初始化:◆變數是類或結構中的欄位,如果沒有顯式初始化,建立這些變數時,其值就預設是0(類和結構在後面討論)。◆方法的局部變數必須在代碼中顯式初始化,之後才能在語句中使用它們的值。
Time of Update: 2015-09-27
標籤:本文使用RSA非對稱式加密和Base64簡單地實現離線註冊碼的產生與驗證功能。主要思路就是提供者持有密鑰,通過RSA加密客戶機標識或時間標識,再通過Base64加密成不太難看的註冊碼,然後分發給客戶機。客戶機解Base64後,通過持有的公開金鑰來驗證註冊碼是否與本機標識或時間標識相符。一、產生公密鑰RSACryptoServiceProvider cryptor = new
Time of Update: 2015-09-27
標籤:[轉]如何:建立 C# 控制台應用程式本主題旨在產生最簡單形式的 C# 程式(控制台應用程式)熟悉 Visual Studio 2008 開發環境。由於控制台應用程式是在命令列執行其所有的輸入和輸出,因此對於快速測試語言功能和編寫命令列工具 + 生產力,它們是理想的選擇。 在本節中,將學習到:如何建立新的控制台應用程式。如何在代碼編輯器中使用書籤。如何查看方案總管。如何使代碼保持良好的格式。如何使用 IntelliSense
Time of Update: 2015-09-27
標籤:c#中拷貝有淺拷貝和深拷貝之分。例如對象A,其中有實值型別欄位和參考型別欄位:1、淺拷貝: 對於實值型別欄位,直接逐位複製到新拷貝的副本對象中,修改副本的欄位的值,不會影響來源物件中欄位的值; 對於參考型別欄位,只複製欄位的引用到副本對象中,引用的對象不複製,因為副本和來源物件的欄位引用的是同一個對象,所以修改副本對象中的欄位會影響來源物件。 實現:使用Object類MemberwiseClone實現。2、深拷貝: 對於實值型別欄位,和淺拷貝的效果一樣; 對於參考型別欄位,不僅複
Time of Update: 2015-09-27
標籤:電子元件 管理系統 管理軟體 項目 實驗室 c#
Time of Update: 2015-09-27
標籤:電子元件 管理系統 管理軟體 項目 實驗室 c#
Time of Update: 2015-09-27
標籤:你可以使用非同步編程來避免你的應用程式的效能瓶頸並且加強總體的響應。然而,用傳統的技術來寫非同步應用是複雜的,同時編寫,調試和維護都很困難。VS2012介紹了簡單的方法,那就是非同步編程,它在.Net Framework 4.5和Windows 運行時提供了非同步支援。編譯器做了開發人員以前做的困難的工作,而且你的應用保持了類似於非同步代碼的邏輯結構。結果,你輕易地就獲得了所有非同步編程的優勢。 非同步提升響應非同步對於可能阻塞的活動是至關重要的。例如當你的應用訪問Web的時候,
Time of Update: 2015-09-26
標籤:string strParam = Request.Params["param"];if ( strParam== null ){ strParam= "";}string strParam= Request.Params["param"] == null ? "": Request.Params["param"];?:就是一個三元的操作符。利用這個三元操作符也稱條件操作符,就很簡單的把一個if語句給實現了。在使用條件操作符的時候要注意,假定條件運算式是這樣
Time of Update: 2015-09-26
標籤:INI檔案常用於儲存各類設定或本地化文本,大概格式如下:[Section]key=value然而.NET架構似乎並沒有提供一個實用的工具來操作它,或許是因為MS想讓我們都使用Settings類控制的config檔案?但是出於多種原因,我還是不太喜歡用Settings類以及這個XML格式的config檔案。幸運的是,有兩個Win32API可以幫我們完成INI檔案的控制:WritePrivateProfileStringGetPrivateProfileString但是非常尷尬的是這倆一個能寫
Time of Update: 2015-09-26
標籤:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Runtime.InteropServices;using System.Windows.Forms;namespace apitest{ public
Time of Update: 2015-09-26
標籤:有兩個類person:public class person{public string name;}public class person{public string Name{set;get;}}第一個類型的name屬性未封裝,其name屬性直接通過public關鍵字暴露給系統中的其他類了,而第二個類型的name屬性通過get set關鍵字進行了封裝,get和set分別對應的是可讀和可寫,相當於如下代碼:private string name;public string
Time of Update: 2015-09-28
標籤:extern "C" 修飾符只有在C++代碼的時候才用到。C++編譯器通常會對變數名和函數名進行改編,這樣在連結的時候會出現問題。假如:1、用C++編寫的Dll,在編譯成Dll的時候,函數名稱和變數名稱以及發生變化2、在C程式中去使用,但是在此函數名稱和變數名稱不會改編3、因此在連結器試圖連結不存在的符號時,錯誤產生上面的解決辦法就是使用 extern "C" 修飾符!!extern "C" 的用意
Time of Update: 2015-09-26
標籤:#include <stdio.h>#include "link.h"void print_item(link p){ printf("%d\n", p->item);}int main(void){ link head, tail, p; //struct node *head; link_init(&head, &tail); //head => NULL p = make_node(3);
Time of Update: 2015-09-26
標籤:#include <stdio.h>#include "queue.h"int main(void){ char *s = "abcd"; while (*s != ‘\0‘) enqueue(*s++); while (!is_empty()) putchar(dequeue()); putchar(‘\n‘); return 0;}static int f = 0,r = 0, sz = 512;