在本系列的上一篇中,談到了介面和委託文法約束強度的比較,我的結論是介面的文法約束要強於委 托。這個話題得到了不少朋友的關注和討論。對此,我在綜合反饋,查閱資料,加上自己的理解的基礎上 對介面和委託的關係進行一個小小的總結,並藉此推動本篇的介紹。一方面,從OO角度看,介面和委託是實現多態性的兩種手段;另一方面,從軟體設計角度看,介面和 委託是將規範與實現分開從而面向抽象編程的兩種手段。因此,就存在的意義而言,介面和委託有著重要
程式世界有兩種神秘的元素,它們無處不在,卻常常未被察覺。它們一動一靜,卻又和諧相處。我給 這對兄弟取上不太恰當的名字,一個叫“協議”,一個叫“約束”。我們常常看到的動態語言、靜態語言 背後,本質上就是“協議”與“約束”兩種元素的作用。靜態語言和動態語言本身沒有一個明確的界限, 它們各有優勢,又各有不足。C#是一門優美的語言,它融合了靜態和動態優勢,如果運用得當,必能動靜結合,呈現出一種和諧
\' \" \\ \0 \a \b \f \n \r \t \U \u \v \x本例效果圖:代碼:using System;class MyClass{ static void Main() { Console.WriteLine("\""); Console.WriteLine("\u0022"); Console.WriteLine(@"\u0022");
關於地理資訊的開發有好多控制項工具可以選擇,GIS軟體包括三家美國GIS開發商ESRI,Intergraph和 MapInfo的軟體產品,以及國產軟體:MapGIS,GeoStar和Citystar,SuperMap等產品。另外還有一些邊緣 產品,是Web GIS的領域,不是純粹的GIS產品,稱之為地圖應用平台可能較好,如Google公司的Google Maps、微軟的Virtual Earth,國內的51地圖,搜狗的地圖等。可能用的比較多的是ESRI了,他的 Arc IMS或者ArcGIS
MapX的主要技術特點(1)、以表(Table)的形式組織資訊每一個表都是一組MapInfo檔案,這些檔案組成了地圖檔案和資料庫檔案。為使用MapInfo,就需要有組成表的使用者資料和地圖檔案。這些檔案可以來自MapInfo或者由使用者建立。使用者要想在MapInfo中工作,就必須開啟一個或多個表。MapInfo通過表的形式將資料與地圖有機地結合在一起。當使用者在MapInfo中開啟資料檔案時,MapInfo將建立一個表。這個表至少由兩個獨立的檔案組成,一個是包含資料結構的檔案,另一個是包含未經
上篇介紹了MapX的部分基本使用代碼,包括放大、縮小、縮放到初始大小(全圖)、平移、矩形選擇、 圓形選擇、箭頭、開啟圖層對話方塊 、開啟ActiveX屬性對話方塊 、添加符號等基本作業碼,本篇繼續探 討一些控制項的基本操作。MapX提供的標準工具,不同的工具將會使滑鼠能夠完成多種任務。例如 ,如果當前的工具設成 miLabelTool,那麼當單擊滑鼠時,會在此特指的地圖對象上放置標籤。滑鼠游標 將根據正使用的工具更改形狀。MapX 可用的標準工具列表如下所示:
在GIS中,地標或者道路等資訊尋找是一項很重要的功能,類似於我們尋找資料庫記錄那樣,需要模糊 進行匹配,一般來說,找到需要的地標或者道路等地圖元素後,雙擊可以定位到地圖的具體位置,並放大 地圖,類似於Google Map的Fly to功能。由於地圖的資訊是按照層來儲存的,所以我們尋找資訊 的時候,也是按照一層層來進行檢索,由於MapInfo的地圖一般有很多層,每層進行遍曆會比較花費時間 ,所以一般的專業系統,都只是關係一部分層,我們通常在設定檔中指定感興趣的層名集合,然後尋找
特別說明,本文整理自一篇網路的文章《MapX從資料庫讀取資料形成新圖層(C#)》在C#中實 現MapX從資料庫讀取資料形成新圖層分為兩個問題:1.MapX從資料庫讀取資料形成新圖層;2.將DataTable轉換為ADO的Recordset。這裡的第二個問題是由第一個問題引起的,因為MapX是一 個COM控制項,而且它只支援ADO的資料訪問方式,而C#編程時一般會使用ADO.NET方式,為此需要在兩種方
有時候需要在程式運行到一定時候或者某個事件之後需要動態產生控制項在C#下一般方式是: private Button Db=new Button() ; Db.Name="Dy_Button" //設定名稱 Db.Location=new Point(100,200);//設定位置 。。。。//其他屬性設定 //這裡添加訊息處理 。。 this.Controls.Add
在教程中,我會把需要特別注意的東東寫出來,所以估計要寫的內容還是比較多,但由於最近幾天比較忙哈,我可能會分幾天時間把教程補充完整,謝謝!本例,完成的東東是一個檔案管理工具,Windows資源管理員山寨版。算是一個很簡單的教程吧,不涉及資料庫,只是做一個winform程式,如果要做成web形式的,基本相同,只需要作小部分地修改。當然,這個檔案管理工具還存在很多不足,有待於功能和介面上的完善。本例主要是提供給那些和我一樣是菜菜的愛好者進行學習,高手呢,可以飄過,當然,能留下您寶貴的指導是最好的,嘿嘿
概述本文是《Effective C#》一書第七節的讀書筆記。通過這篇文章,我主要想向大家說明一個我們平時 可能不太會注意到的問題:建立具有常量性和原子性的實值型別。從類型設計談起從Class到Struct假如我們要設計一個儲存收信人地址的類型(Type), 我們管這個類型叫 Address。它應該包含這樣幾 個屬性:Province 省City 市Zip 郵編要求對Zip的格式進行控制(必須全為數字,且為6位),大家該如何設計呢?我想很多人會寫成這樣吧
1.設定表單內容showintask=false2.加notifyicon控制項notifyicon1,為控制項notifyicon1的屬性icon添加一個icon表徵圖。3.添加表單最小化事件(首先需要添加事件引用)://this.sizechanged+=newsystem.eventhandler(this.form1_sizechanged);//上面一行是主表單initializecomponent()方法中需要添加的引用 privatevoidform1_sizechanged(ob
一般來說,Windows的一個優點(實際上是現代作業系統的優點)是它可以讓開發人員不考慮特定裝置的細節。例如:不需要理解硬碟裝置驅動程式,只需在相關的.NET類中調用合適的方法,就可以編程讀寫磁碟上的檔案。這個規則也適用於繪圖。電腦在螢幕上繪圖時,把指令發送給視訊卡。問題是市面上有幾百種不同的視訊卡,大多數有不同的指令集合功能。如果把這個i考慮在內,在應用程式中為每個視訊卡驅動程式編寫在螢幕上繪圖的特定代碼,這樣的應用程式就根本不可能編寫出來。這就是為什麼在Windows最早的版本中有Windo
private string CheckCidInfo(string cid){string[] aCity = new
對資料庫的操作總體可以分為兩類:查詢(select)和更新(insert,delete,update)。為什麼這樣來分 呢?仔細看看兩類的區別,select只是從資料庫中將資料拿出來使用,而其餘三者都會對資料庫的物理數 據進行修改。capucivar在上篇文章中已經對資料庫的查詢操作進行了詳細的闡述。這篇文章將接著闡述 更新資料。更新資料庫資訊首先是串連資料庫,這個capucivar在《C#串連資料庫之查詢資料庫》中已有介紹了。
Microsoft.Net Framework為應用程式訪問Internet提供了分層的、可擴充的以及受管轄的網路服務,其名字空間System.Net和System.Net.Sockets包含豐富的類可以開發多種網路應用程式。.Net類採用的分層結構允許應用程式在不同的控制層級訪問網路,開發人員可以根據需要選擇針對不同的層級編製程式,這些層級幾乎囊括了Internet的所有需要--從socket通訊端到普通的請求/響應,更重要的是,這種分層是可以擴充的,能夠適應Internet不斷擴充的需要。
建構函式與解構函式是一個類中看似較為簡單的兩類函數,但在實際運用過程中總會出現一些意想不到的運行錯誤。本文將較系統的介紹建構函式與解構函式的原理及在C#中的運用,以及在使用過程中需要注意的若干事項。一.建構函式與解構函式的原理作為比C更先進的語言,C#提供了更好的機制來增強程式的安全性。C#編譯器具有嚴格的型別安全檢查功能,它幾乎能找出程式中所有的文法問題,這的確幫了程式員的大忙。但是程式通過了編譯檢查並不表示錯誤已經不存在了,在“錯誤”的大家庭裡,“語法錯誤
1.怎樣定製VC#DataGrid欄位標題?DataGridTableStyle dgts = new DataGridTableStyle(); dgts.MappingName = "myTable"; //myTable為要載入資料的DataTable DataGridTextBoxColumn dgcs = new DataGridTextBoxColumn(); dgcs.MappingName = "title_id"; dgcs.
1. 你通常怎樣用多態? 假設我有一個類,裡面有一個 PrintStatus 方法,用於列印執行個體的目前狀態,我希望該類的衍生類別都帶有一個 PrintStatus 方法,並且這些方法都用於列印其執行個體的目前狀態。那麼我會這樣表達我的願望:// Code #01class Base{ public virtual void PrintStatus() { Console.WriteLine("public virtual void PrintStatus() in Base&
“多態性”一詞最早用於生物學,指同一種族的生物體具有相同的特性。在C#中,多態性的定義是:同一操作作用於不同的類的執行個體,不同的類將進行不同的解釋,最後產生不同的執行結果。C#支援兩種類型的多態性:編譯時間的多態性編譯時間的多態性是通過重載來實現的。我們在第十一章中介紹了方法重載的操作符重載,它們都實現了編譯時間的多態性。對於非虛的成員來說,系統在編譯時間,根據傳遞的參數、返回的類型等資訊決定實現何種操作。運行時的多態性運行時的多態性就是指直到系統運行時,才根據實際情況