在過去的學習中,我們始終接觸的單個類的繼承,但是在現實生活中,一些新事物往往會擁有兩個或者兩個以上事物的屬性,為瞭解決這個問題,C++引入了多重繼承的概念,C++允許為一個衍生類別指定多個基類,這樣的繼承結構被稱做多重繼承。 舉個例子,交通工具類可以派生出汽車和船連個子類,但擁有汽車和船共同特性水陸兩用汽車就必須繼承來自汽車類與船類的共同屬性。 由此我們不難想出如下的圖例與代碼:
利用設計模式可以使我們的代碼更靈活,更容易擴充,更容易維護。各種物件導向的程式設計語言都提供了基本相同的機制:比如類、繼承、派生、多態等等。但是又有各自的特色,C# 中的反射機制便是一個很重要的工具,好好地利用就可以在實際中發揮很大的作用。 我們來看一個例子: 我的程式中有需要一系列的對象,比如apple,orange…, 要想利用他們,我們就必須在程式中根據使用者要求,然後一個個調用 new
Singleton模式 Singleton(譯為單件或單態)模式是設計模式中比較簡單而常用的模式。 有些時候在整個應用程式中,會要求某個類有且只有一個執行個體,這個時候可以採用Singleton模式進行設計。用Singleton模式設計的類不僅能保證在應用中只有一個執行個體,而且提供了一種非全域變數的方法進行全域訪問,稱為全域訪問點,這樣對於沒有全域變數概念的純物件導向語言來說是非常方便的,比如C#。
執行個體如下:public void SendMail(string from, string to, string subject, string body) { string mailServerName = "smtp.test.com"; try { //MailMessage represents the e-mail being
文章目錄 擴充方法要點 上一篇我們介紹了C# 3.0新語言特性和改進上部分,這篇我們繼續介紹剩下的部分。C# 3.0新語言特性和改進包括:自動屬性(Auto-Implemented Properties) 隱含類型局部變數(Local Variable Type Inference) 匿名型別(Anonymous Types) 對象與集合初始化器(Object and Collection Initializers)
[轉載]C#如何?對外部程式的動態調用調用cmd.exe程式和外部程式 using System;using System.Diagnostics;namespace ApplyCmd{ /// /// CmdUtility 的摘要說明。 /// public class CmdUtility { /// /// 執行cmd.exe命令 /// /// /// 命令輸出文本 public static string ExeCommand(string commandText)
快顯視窗殺手是一個可以自動關閉IE快顯視窗的程式,它工作在系統的托盤中,按照一定的間隔來檢測IE視窗,然後關閉彈出表單。最後,還提供了用熱鍵來殺掉快顯視窗的功能。 雖然已經有類似的用C++寫的程式,但是本文講述的是用C#來實現這些功能,並且本文所講的方案在尋找視窗上的方法要比更快一些。 這是一個嶄新的話題,在Internet上我們還可以看到許多類似的程式。但是我也還是要借這個機會來講述一些下面的技術在C#中如何?: 系統托盤 程式切換 計時控制項 尋找視窗
#include <winsock2.h>#include <Ws2tcpip.h> #include <windows.h>#include <stdio.h>#pragma comment(lib,"ws2_32")#pragma comment(lib,"wsock32")#define FAKE_IP "201.79.131.18" #define SEQ 0x28376839#define right
混亂的URI編碼 JavaScript中編碼有三種方法:escape、encodeURI、encodeURIComponent C#中編碼主要方法:HttpUtility.UrlEncode、Server.UrlEncode、Uri.EscapeUriString、Uri.EscapeDataString JavaScript中的還好,只提供了三個,C#中主要用的就有這麼多,還沒有列出其他編碼(HTML),一多就弄不明白,弄不明白就心生恐懼,心生恐懼就變得苦逼,本文就向大家詳細解釋在Jav
在程式寫好後,我們如果要不斷的升級程式的功能的話,用以前的思想來寫程式的話,辦法就只有不斷的添加、更改主程式的代碼,難道就沒有其他的辦法了嗎?答案是肯定有的。那麼怎麼實現呢?——外掛程式!對,就是外掛程式,就好像我們的Eclipse,那就是用外掛程式“搭”出來的程式,利用外掛程式,我們可以很方便的對程式的功能進行添加、修改、而不用重編譯整個工程,這個就是利用外掛程式技術的好處!下面寫出我在實際開發中利用到的一些方法,我將它們整理了一下,供大家看。。。。(這裡只是動態載入一個類的例子!其他的程式集
最近無聊寫了一個字串加密、解密的函數。。。。。。。。這個演算法簡單勒。俺把它稱為BT加密。呵呵。為什麼叫BT(變態)加密法喃?呵呵,那就是因為它的加密結果嘍!呵呵。。用這個加密函數加密字串http://maxun.cnblogs.com試試,哈哈。得到的一定是一串“口”吧?HOHO。經過實驗。並不是所有的字串加密後都是“口”。。。呵呵,有興趣的朋友可以自己試試嘛:)註:該演算法沒有任何技術性內容,只是個人無聊之極的無聊之“作”,請不要用做其他目的,否則後果自負!呵呵哈!using System;
c#4.0中新特性之一就是:具名引數和選擇性參數。 具名引數:調用方法時,可以不按位置傳遞參數,而是指定參數的命名來傳值;private void Func(string str,int number,bool flag){}對於上面的函數,使用具名引數調用時可以是
靜態和動態類型靜態語言如C#,C++,Java都是在編譯時間執行類型檢查,與此相反,動態語言如JavaScript,Perl和Ruby都是在運行時執行類型檢查。C#最初被設計為基於強壯類型的語言,因為編譯器可以確保類型匹配,在開發週期的早期階段就會發現bug。現在情況發生了變化,在C#中引入了動態類型,你可以無縫地調用不同類型的對象了,如COM和JavaScript。Var和dynamic關鍵字為了支援動態變數聲明,C#
1、委託:其實就是方法的多態,可以更確切的說是方法的指標2、委託是參考型別,這與類和介面相似。3、一個委託可以指向多個方法,方法的簽名相同,委託才能指向它4、介面只能一次可以指向一個執行個體,而委託可以指向多個方法;此刻調用一個委託可以調用多個方法,也即是委託鏈5、使用委託的步驟:步驟1:聲明委託 1定義委託:可訪問性 delegate 傳回型別 (參數列表); 2定義方法:可訪問性 傳回型別 (參數列表) //以上兩點根據參數類型和傳回型別進行匹配,
郵件發送系列的第二篇文章,本文介紹了使用命名空間System.Net.Mail下的MailMessage和SmtpClient實現了郵件發送。using System;using System.Collections;using System.Text;using System.Net;using System.Net.Mail; namespace NetMailSend{ class Programe { public static void
1.Response.Redirect("http://www.bcbbs.net",false); 目標頁面和原頁面可以在2個伺服器上,可輸入網址或相對路徑。後面的bool值為是否停止執行當前頁。 跳轉向新的頁面,原視窗被代替。"
用.net framework的確有很多現成的加密解密類,但為了更靈活以及更安全對字串加密解密,可以把string 轉換成char後用自己的方法加密解密。using System;using System.Text;namespace SetPassword{ /// <summary> /// .net 密碼加密 /// </summary> class CbsPassword { [STAThread] static void Main(string[]
(2008-09-10 10:13:48) 在System.IO名稱空間中包含了用於檔案輸入輸出的主要類。File:實用類,提供許多靜態方法,用於移動、複製和刪除檔案。Directory:實用類,提供許多靜態方法,用於移動、複製和刪除目錄。Path:實用類,用於處理路徑名稱。FileInfo:表示磁碟上的物理檔案,具有可以處理此檔案的方法。要完成對檔案的讀取和寫入工作,就必須建立Stream對象。DirectoryInfo:表示磁碟上的物理目錄,具有可以處理此目錄的方法。FileStream:
C#格式化數值結果表字元說明樣本輸出C貨幣string.Format("{0:C3}", 2)$2.000D十進位string.Format("{0:D3}", 2)002E科學計數法1.20E+0011.20E+001G常規string.Format("{0:G}", 2)2N用分號隔開的數字string.Format("{0:N}", 250000)250,000.00X十六進位string.Format("{0:X000}", 12)Cstring.Format("{0:000.000}"
我們知道,對於一些基本的資料類型(Int32、long、double等)我們可以通過+、-,*等進行一些運算,但是對於自己定義的一些複雜類型,如果我們想實現這些功能只能通過定義一些方法,以執行這些操作,這樣肯定不太直觀。如果要想自己的類上使用這些運算子功能,就必須告訴編譯器相關的運算子在這個類中的含義以及運算邏輯,此時就用到了運算子多載。 運算子的重載不僅限於算術運算子,在進行重載時還需要考慮到一些比較子==、<、>、!=、>=、<=等。例如if(a==b),對於類