返回“設計模式(C#)系列文章索引”介紹將一個類的介面轉換成客戶希望的另外一個介面。Adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。樣本有一個Message實體類,某個類對它的操作有Insert()和Get()方法。現在需要把這個類轉到另一個介面,分別對應Add()和Select()方法。MessageModelusing System;using System.Collections.Generic;using
返回“設計模式(C#)系列文章索引”介紹保證一個類僅有一個執行個體,並提供一個訪問它的全域訪問點。樣本保證一個類僅有一個執行個體。Singletonusing System;using System.Collections.Generic;using System.Text;namespace Pattern.Singleton{ /**//// <summary> /// 泛型實現單例模式 /// </summary> ///
返回“設計模式(C#)系列文章索引”介紹用原型執行個體指定建立對象的種類,並且通過拷貝這個原型來建立新的對象。樣本有一個Message實體類,現在要複製它。MessageModelusing System;using System.Collections.Generic;using System.Text;namespace Pattern.Prototype{ /**//// <summary> /// Message實體類 ///
介紹類圖加執行個體的方式介紹設計模式(C#)建立型模式(Creational Pattern)1、設計模式(C#) - 抽象原廠模式(Abstract Factory Pattern)介紹提供一個建立一系列相關或相互依賴對象的介面,而無需指定它們具體的類。2、設計模式(C#) - 建造者模式(Builder Pattern)介紹將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。3、設計模式(C#) - 原型模式(Prototype
曾經看到過許多同事寫過一些類似於StringHelper類(封裝一些常用的字串操作方法的類),我自己也寫過類似的類,封裝一些拼接字串,比較字串,判斷字串等常用的字串操作方法。現在發現,這些方法中大部分都是多餘的,微軟已經為字串提供了許多常用的操作了,而且比自己寫的更強大,更容易使用。下面列舉一些常用的方法:string input = " , abcde , ";string[] inputs = { "a", "b",
前言這篇文章出自我個人對C#虛函數特性的研究和理解,未參考、查閱第三方資料,因此很可能存在謬誤之處。我在這裡只是為了將我的理解呈現給大家,也希望大家在看到我犯了錯誤後告訴我。用詞約定“方法的簽名”包括傳回型別、方法名、參數列表,這三者共同標識了一個方法。“聲明方法”,即指出該方法的簽名。“定義方法”,則是指定調用方法時執行的代碼。“同名方法”是指方法的簽名相同的兩個方法。“重寫&rdquo
文章內容參考了nuaaflm的反射學習系列2-特性(Attribute),連結地址為:http://www.cnblogs.com/nuaalfm/archive/2008/09/07/1286195.html因為打算寫一個簡單的ORM實現,所以上網上參考了些資料,現在先介紹一下需要用到的一個重要的技術,特性(Attribute)。因為原文的作者已經介紹得很詳細了,我就不自己寫了,直接COPY過來。由於原作者使用的是.net3.5的,我把代碼改成了2.0的版本。先看一個簡單的例子[Table(N
在PureMVC中,通知(Notification)貫穿整個架構,把觀察者模式發揮得淋漓盡致。MVC的三層通訊都是通過Notification來通訊。Notification由兩部分組成:Name和Body。如果把Notification當作是郵件,那麼Name就是收件者,不過在PureMVC中可以有多個觀察者(Observer)接收相同的郵件,Body自然就是Notification的內容了。Notification和Observer的關係是1:N,這點可以從View層的代碼中看出來。obse
鏈表是一種重要的資料結構,該結構由節點群組成。每個節點包含兩部分資料,第一部分是節點本身的資料,第二部分是指向下一個節點的指標。對於單向鏈表,鏈表中存在兩個特殊的節點,分別為“前端節點”和“尾節點”。前端節點本身沒有資料,只儲存下一個節點的指標,尾節點只儲存資料。結點的定義及對線性表的操作如下:首先,定義一個結點類用於對結點的描述。其中,私人成員Value用於儲存節點本身的資料,Next用於儲存下一個節點的指標,Previous用於儲存上一個節點的
常用演算法(C#): 計算10! 的值.using System;using System.Collections.Generic;using System.Text;namespace ExFactorial{ class Factorial { public double factorial(int num) { switch (num) { case 1: return 1; default :
和棧相反,隊列是先進先出的線性表,它只允許在表的一端進行插入,而在另一端刪除元素。在隊列中,允許插入的一端叫做隊尾,允許刪除的一端稱為隊頭。在隊列的實現過程中主要有兩個操作,即入隊和出隊。(1)入隊就是在隊列的尾部添加資料,隊列資料個數加一,尾指標後移。(2)出隊就是在隊列的頭部取的資料後,然後刪除該資料,頭指標後移。具體代碼如下:/// <summary>/// 隊列類/// </summary>public class CQueue{ private
圖 14-6所示是程式範例CH14_DemoForm006.cs的執行畫面。我們發現,您只要單擊表單上的按鈕,便會啟動預設的瀏覽器並串連至指定的網址。相關程式碼編寫於按鈕的Click事件處理函數中,說明如下:圖 14-6◆請使用Process類的Start方法來啟動預設的瀏覽器,並指定所要開啟的URL、FTP或檔案。因為Start方法是一個共用方法,因此您不需要建立Process類的執行個體就可以調用Start方法。比方說,下面的寫法都是正確的:string target =
6 第六章 語句6.1 每行一個語句每行最多包含一個語句。如a++; //推薦b--; //推薦a++; b--; //不推薦6.2 複合陳述式複合陳述式是指包含"父語句{子語句;子語句;}"的語句,使用複合陳述式應遵循以下幾點:1)子語句要縮排。2)左花括弧“{” 在複合陳述式父語句的下一行並與之對齊,單獨成行。3)即使只有一條子語句也不要省略花括弧“ {}”。 如while (d + = s++){ n++;}6.3
本文是對C#網路版鬥地主的總結,之後還有兩篇,分別介紹地主許可權的傳遞和出牌許可權的傳遞,還有出牌演算法和規則。伺服器使用server類與用戶端通訊,用戶端使用client類與伺服器通訊。當建立遊戲時,new出一個server對象,並且開始監聽預設連接埠“1991”。然後建立一個線程,用死迴圈while(true)檢測是否有用戶端串連,如果有的話擷取Client對象,當擷取了兩個Clinet對象後,停止監聽,中斷迴圈。伺服器擷取了兩個用戶端後,啟動兩個線程“A
斷斷續續寫了一個月,總算是把這個東西搞出來了。第一次寫網路程式,所以網路部分很爛,如果網路延遲厲害的話就會出錯。出牌規則和牌組之間的比較已經比較完善,能想到的組合方式都寫上去了。由於本人學習C#的時間不長,而且是利用業餘時間學習。所以技術不怎麼樣,寫出來的代碼總共2147行。品質個人覺得比較差勁,剛開始架構整個程式時還是按照物件導向的思考方式架構整個程式,但是架構了一部分之後後面的東西,比如網路,規則等實在是想不出來了,只能走一步算一步。所以後面寫的代碼基本沒有物件導向,完全是為了實現功能寫代碼
前陣子想用C#寫個掃雷,檢驗一下學習一年多C#的功力如何。掃雷的基本實現很簡單,動態產生控制項,然後用Controls.Add添加到視窗中,用隨機數佈雷,處理Mouse事件...最麻煩的事情不過是在點到空白地帶的時候需要實現一個FloodFill演算法。不過要實現一個十分接近Windows掃雷的版本,還是需要費一些周折的。首先需要找到資源檔,我是在百度知道上搜到的,或者從掃雷的資源檔裡讀取也可以。其次,控制項上的映像,要用gdi+畫上去,如果使用picture_box去load
返回“設計模式(C#)系列文章索引”介紹定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。Template
返回“設計模式(C#)系列文章索引”介紹定義一系列的演算法,把它們一個個封裝起來,並且使它們可相互替換。本模式使得演算法的變化可獨立於使用它的客戶。樣本有一個Message實體類,對它的操作有Insert()和Get()方法,持久化資料在SqlServer資料庫中或Xml檔案裡(兩種可互換的演算法)。由用戶端決定使用哪種演算法。MessageModelusing System;using System.Collections.Generic;using
返回“設計模式(C#)系列文章索引”介紹在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外儲存這個狀態。這樣以後就可將該對象恢複到儲存的狀態。樣本有一個Message實體類,某個對象對它的操作有Insert()方法,只有在插入時間符合要求的情況下才能插入成功,因此要求可以儲存和恢複Message對象的狀態,插入失敗後則恢複Message對象的狀態,然後只更新時間,再次插入。MessageModelusing System;using
返回“設計模式(C#)系列文章索引”介紹提供一種方法順序訪問一個彙總對象中各個元素,而又不需暴露該對象的內部表示。樣本有一個Message實體類,某彙總對象內的各個元素均為該實體物件,現在要提供一種方法順序地訪問這個彙總對象中的各個元素。MessageModelusing System;using System.Collections.Generic;using System.Text;namespace Pattern.Iterator{ /**////