通過索引器簡化C#類型資訊訪問

前言作為一個有別於Java、Ruby等語言的一個特性,C#可以用索引器(Indexer)將類型本身以對象數組的形式供外部使用。下面是一個對比:(為了簡化,略去了邊界檢查)相關廠商內容QClub:當SOA遭遇現實(7.26 杭州)不難看出通過引入索引器,我們的目標類型DataAccess在涉及到根據編號檢索的時候看上去更接近一個數組的樣子,客戶程式的開發人員不用關心具體的方法名稱是GetData/GetInternalData或者是SetData/

C#開發中的泛型學習執行個體

C#中所謂泛型:即通過參數化型別來實現在同一份代碼上操作多種資料類型。泛型程式設計是一種編程範式,它利用“參數化型別”將類型抽象化,從而實現更為靈活的複用。C#泛型賦予了代碼更強的型別安全,更好的複用,更高的效率,更清晰的約束。C#泛型機制簡介C#泛型能力由CLR在運行時支援,區別於C++的編譯時間模板機制,和java的編譯時間的“搽拭法”。這使得泛型能力可以在各個支援CLR的語言之間進行無縫的互操作。C#泛型代碼在被編譯為IL和中繼資料時,採用特

用C#編寫網頁小應用程式(Applet)

學過Java的朋友可能都聽說過Java的曆史:當初Java是為機頂盒裝置和手持功能設計的,可惜理念在當時太朝前,結果沒有被人所接受,於是Java的創始人James Gosling想到在網路上碰碰運氣,當時吸引大家眼球的就是用Java編寫的一個Applet,早期Java的應用很多時用來編寫Applet,後來慢慢發展到J2ME/J2SE/J2EE三個分支。現在RIA(Rich Internet

在c#使用IOCP(完成連接埠)的簡單樣本

這次給大家示範一下利用IOCP的線上程間傳遞資料的例子,順便打算講一些細節和注意的地方。概述:這裡主要使用IOCP的三個API,CreateIoCompletionPort,PostQueuedCompletionStatus,GetQueuedCompletionStatus,第一個是用來建立一個完成連接埠對象,第二個是向一個連接埠發送資料,第三個是接受資料,基本上用著三個函數,就可以寫一個使用IOCP的簡單樣本。其中完成連接埠一個核心對象,所以建立的時候會耗費效能,CPU得切換到核心模式,而

C#-用Stopwatch類進行速度測試

軟體的運行速度必須要在使用者可以接受的範圍內。通常,改善那些短暫的但頻繁使用的例 程的速度會大幅度地提高軟體的整體速度。要改善速度,當然首先要能夠量度時間。 好,那我們考慮一下在跑道上的情況,槍聲一響,馬上按下秒錶開始計時,在選手到達終點 那一刻結束計時,這時就可以知道該選手所用的時間了。要開始對下一輪比賽計時前,要先 將秒錶歸零。.NET2.0也提供了這樣一個秒錶:Stopwatch類,它可以比較精確地測量時間。速度測試:軟體的效能和可測性是一個複雜的主題。要確保應用程式能夠滿

C#中將Big5繁體轉換簡體GB2312

C#中將Big5繁體轉換簡體GB2312的程式。using System;using System.IO;using System.Text;using System.Runtime.InteropServices;//big5繁體轉換簡體的程式public class EncodeTool{[DllImport("kernel32.dll", EntryPoint = "LCMapStringA")]public static extern int

C#進行Visio二次開發之電氣線路停電分析邏輯

停電分析,顧名思義,是對圖紙進行停電的邏輯分析。在電氣化線路中,一條線路是從一個電源出來,串連著很多很多的裝置的,進行停電分析,有兩個重要的作用:一是看圖紙上的Shape元件是否串連正常,二是看哪些裝置有電無電。通過給有電的裝置一種顏色(如綠色),無電的裝置一種顏色(如紅色),那麼就可以很明顯地看到通電的不同變化。對一張Visio繪製的電氣線路圖,我們如何進行停電分析呢?下面我們看看相關的序列邏輯先。在上面的順序圖表中,主要實現了這樣的思路:停電分析是通過儲存裝置相關串連資訊到資料庫,以電源(如

C#進行Visio二次開發之事件

回顧Visio的對象Application對象Window對象Document對象Page對象Master對象Shape對象Cell對象Visio對象還有Selection對象Connects對象Style對象KeyboardMouseDataRecordsetApplication對象的事件右鍵菜單:MarkerEvent程式退出前:BeforeQuit模態視窗關閉後:AfterModal模態視窗出現前:BeforeModalVisio事件完成:NoEventsPending程式啟用:AppA

C#進行Visio二次開發之Web查看Visio圖紙

前面介紹的Visio開發知識,都是基於Winform的Visio的開發知識,圖紙的展示都是基於Winform方式展示的。但很多時候,如果能夠通過Web方式可以查看最新的圖紙資訊,那麼系統將更加趨向完美,你說是不是呢?通過Web方式查看Visio圖紙實現起來也是很容易的,首先需要在IE用戶端安裝一個Visio

C#進行Visio二次開發之Web端啟動繪圖用戶端並登入

有這樣的需求,一個系統,包含Web端的後台和Winform的繪圖用戶端程式,使用者需要在Web端能夠啟動繪圖用戶端,並且不需要重新登入(因為已經登入了Web端了)。那麼在IE的Web端,如何啟動Winform做的繪圖用戶端程式呢?當然對於其他傳統型應用程式也是一樣的。總體思路是:1. 在asp.net頁面中增加一個按鈕或者菜單,串連是調用一個JavaScript函數實現啟動程式2. 用戶端的使用者的環境變數有該應用程式的目錄路徑資訊3.

C#進行Visio二次開發之介面設計及架構設計

寫C#進行Visio二次開發的系列文章有很多篇了,都是寫一些經驗總結和技術知識的分享,本文繼續來探討這方面開發的一些心得,主要介紹下WinForm介面的設計和Visio軟體的架構設計。先看看我花了N個月的業餘時間完成的軟體概貌,然後大家一起討論下相關的技術知識。軟體介面主要有菜單區、工具條區、圖紙內容區、右邊的管理區、狀態條區等等,主要注意的是採用了ToolStripPanel來進行布局,然後並使用了有名的WeifenLuo.WinFormsUI.Docking.dll控制項對圖紙內容區、右邊的

C#進行Visio二次開發之圖紙縮放操作的實現

我們知道,Visio菜單【視圖】中有一個縮放的功能表項目,如下所示,選擇響應的選項會對圖紙進行縮放。另外,它的工具條中也有一個下拉式清單方塊,除了可以選擇現有的那些選項外,還可以輸入自訂的值,達到自訂縮放比例的功能。本文介紹如何使用C#和Visio的SDK函數,實現Visio中的圖紙各種縮放操作。首先我們建立一個縮放功能表項目和一個各種縮放比例的子功能表項,如第一個圖形所示;然後將所有的子功能表項的事件處理指向同一個函數,如下所示private void

C#進行Visio二次開發之雞毛蒜皮(一)

1. 為圖元設定顏色在一些分析中,如電氣線路分析中,需要根據不同 的狀態改變圖元的顏色,那麼如何改變指定圖元的裝置顏色呢?下面提供代碼解 決該問題。shape.get_CellsU("LineColor").ResultIU = (double)VisDefaultColors.visDarkGreen;//有電(綠色)其中 VisDefaultColors是一個枚舉,有很多顏色,可以查下SDK,也可以使用其對應的 數值來代替

C#進行Visio二次開發之自訂右鍵菜單

Visio Drawing Control中整合自訂菜單是很多項目必須的,很多朋友也問 過我如何?這些菜單,下面介紹下Visio自訂菜單的實現。Visio二次 開發中,為Visio Drawing Control添加自訂菜單有兩種方式:一種是使用捕捉 Visio的MouseUpEvent事件,彈出ContextMenu即可;另一種是通過在PageSheet中 增加Action來實現,也就是使用RUNADDONWARGS函數來實現。兩種實現的

C#進行Visio二次開發之組合形狀操作

由於一朋友需要Visio實現模擬類比Demo,因此我在原來Visio項目代碼基礎上進行改進調整,完成了其需要的功能。現將對原有Visio二次開發項目的創新思路及成果總結一下,以饗讀者,也做為一個標誌,供日後參考,或者於各位同行,一起研究切磋。先貼圖展示整個項目的該款,表明此文章所託並非空穴來風、紙上談兵!本人基於項目的Visio的二次開發文章寫了很多,其中涉及到各形狀方面的操作,但基本上都是做為一個圖形的整體來實現各種效果的,由於模擬需要,需要將換向閥實現左右變換功能,而換向閥是一個群組控制項,

C#下實現空白表單上中文輸入,可以實作類別PS的文字工具

在空白表單上開啟IME,在C#裡的空白視窗是無論如何也是打不開IME.設 置了this.ImeMode= ImeMode.NoControl也是無法開啟IME的錄字視窗.去 Microsoft 開發論壇上問了一些問題.感謝周雪峰版主與Riquel_Dong 版主給的 指點.用了API函數: ImmAssociateContext(IntPtr hWnd, IntPtr hIMC);終 於把IME給調了出來,它的功能是把輸入與指定的視窗進行關聯.代碼如 下:f (m.Msg ==

C#線程系列講座(5):同步技術之Monitor

在上一講介紹了使用lock來實現線程之間的同步。實際上,這個lock是C#的一 個障眼法,在C#編譯器編譯lock語句時,將其編譯成了調用Monitor類。先看看下 面的C#原始碼:public static void MyLock(){ lock (typeof(Program)) { }}上面的 代碼通過lock語句使MyLock同步,這個方法被編譯成IL後,代碼如圖1所示。圖1從上圖被標註的地區可以看到,一條lock語句被編譯成了調

C#線程系列講座(4):同步與死結

雖然線程可以在一定程度上提高程式啟動並執行效率,但也會產生一些副作用。讓 我們先看看如下的代碼:class Increment { private int n = 0; private int max; public Increment(int max) { this.max = max; } public int result { get

C#線程系列講座(3):線程池和檔案下載伺服器

如果設計一個伺服器程式,每當處理使用者請求時,都開始一個線程,將會在一 定程式上消耗伺服器的資源。為此,一個最好的解決方案就是在伺服器啟動之前 ,事先建立一些線程對象,然後,當處理用戶端請求時,就從這些建好的線程中 獲得線程對象,並處理請求。儲存這些線程對象的結構就叫做線程池。在C#中可以通過System.Threading.ThreadPool類來實現,在預設情況下, ThreadPool最大可建立500個背景工作執行緒和1000個I/O線程(根據機器CPU個數和.net

C#線程系列講座(2):Thread類的應用

一、Thread類的基本用法通過System.Threading.Thread類可以開始新 的線程,並線上程堆棧中運行靜態或執行個體方法。可以通過Thread類的的構造方法 傳遞一個無參數,並且不傳回值(返回void)的委託(ThreadStart),這個委託的 定義如下:[ComVisibleAttribute(true)]public delegate void ThreadStart()我們可以通過如下的方法來建立並運行一個 線程。using System;using

總頁數: 4314 1 .... 2896 2897 2898 2899 2900 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.