用is和as檢查和轉換相容類型

以前,需要檢查一個執行個體的類型時,我都使用強制轉換操作。還在剛Pascal轉到C++的時候,是這樣寫的,感覺有代碼有點笨拙。 (C#代碼)bool CheckIsType(object source){    try    {        TagClass result = (TagClass)source;        return true;    }    catch    {        return false;   

更人性化地控制使用者輸入(1 of n)

通過設定限制"全形"輸入。 幾年前,我在net 1.0上做一個項目,交付之後客戶總是說模糊搜尋出來的資料不準確。翻看代碼,沒問題!看看日誌,也沒問題!運行測試,沒報錯。最後只好跑到客戶那裡看個究竟,一天輸入的數千份單據中如果按目的地去查是總數是10,如果按照操作員(一個目的地由只由一個操作員錄入)去查,總數卻是35,實際上應該是35。天啊是什麼回事?查了下資料庫,原來是中文IME惹的禍。目的地的正確地址是"H.K.

是否同一個事實對象,讓Equals說了算

假如,有這樣的一個需求,有一個病人執行個體和一個居民執行個體,只要名字相同,就說他們是同一個人,操作應該對等。你怎樣判斷呢? public class People{    private string nameField = "";    public string Name    {        get { return nameField; }        set { nameField = value; }    }}public class Person : People {

學WPF (1 of n)幹啥都有第一次

Windows Presentation Foundation (WPF)推出一段日子了,國外熱火朝天;但國內好像靜觀其變,就像C#剛剛推出的狀況一樣。WPF是什嗎?一查才知道,這個是專門做展現層的。裝了Visual Studio 2008那麼久了,沒理由不去試一下,是騾是馬拉出來遛遛。 第一步,建立WPF應用程式項目。在Visual Studio 2008上選擇菜單"檔案>>建立>>項目…";在"建立項目對話方塊"中選擇"項目類型>>Visual

更人性化地控制使用者輸入(2 of n) 只限輸入數字字元

介面有這樣的需求,部分輸入框(如電話號碼等),只允許輸入數字字元。大家怎樣解決呢?有人說用Regex處理驗證事件。我覺得這樣晚了一點,而且很難控制全面。 我向大家推薦一種繼承TextBox的做法。 public class DPTextBox : TextBox {     public DPTextBox() : base()     {        base.ImeMode = ImeMode.Disable;     }     protected override bool

工程管理(1 of n): 建立用於管理代碼開發的注釋標記

我最近向的軟體工程管理職位轉變,感覺力不從心,由於缺乏管理經驗,一直覺得代碼工程失控,思維推不下去。在要求下面做個功能的時候,寫代碼的同事總是丟三落四,或者完成了不告訴你,或者做了邏輯跟你想得不一樣,或者整個模組託管給他做(黑盒)整個邏輯就亂套了,到維護的時候每人能看懂他寫的代碼。我Boss也經常說我管理的工程進展緩慢,工作量無法統計等等。辦法是逼出來的,建立了這套標記方案,拿出來給大家討論。 標記的格式: [任務類別] Task: '['[執行任務人]{Finish=[是否完成];

SubVersion的bug?(關於CheckOut的)

不知道算不算bug,還是我的配置有誤。 說說我的情況,一個大的項目下包括幾個相對獨立的小項目,比如a,b,c,大項目如X,我為X建了一個Repository,然後下面分別是a,b,c的目錄(其實還有上一層的trunk等目錄,和這個問題無關,先不說了)。 使用apache做伺服器,許可權控制項用apche的基本使用者驗證,設a,b,c的訪問使用者分別為三個不同的使用者ua,ub,uc,而X的訪問使用者為ua,ub,uc都可以訪問。這是正確的,如果在X這層就不可訪問,那下面的abc也就不可能訪問了。

體面地處理常式的未捕獲異常

經常有客戶抱怨程式遇到錯誤的時候程式就退出了,甚至來不及儲存表單的輸入資料,如果是普通的搜尋介面也就罷了,但如果客戶是話務中心,問題就嚴重了.按道理,我們的程式員應該處理所有的異常,但有事實上做到的很難,因為出乎意料的情況太多了. 在這篇文章,我給大家介紹一下我的處理方法。 首先介紹相應的C#相關知識: System.Windows.Forms.Application類 提供 static 方法和屬性以管理應用程式,例如啟動和停止應用程式、處理 Windows

用 .NET Memory Profiler 跟蹤.net 應用記憶體使用量情況–基本應用篇

用 .NET Memory Profiler 跟蹤.net 應用記憶體使用量情況--基本應用篇 作者:肖波      .net

採用管道進行通訊的例子續

採用管道進行通訊的例子續作者:肖波     今天對 .net 2.0 的 System.Runtime.Remoting.Channels.Ipc  做了一個相同的測試,測試結果是每秒傳輸速度為 33MB。 由於底層技術都是一樣的,我估計其比我這個例子(180MB每秒)慢的主要原因應該是在序列化上。     System.Runtime.Remoting.Channels.Ipc 的測試代碼見下面連結,我把微軟給的例子簡單改了一下。    

一個常考重新導向問題

APUE 3.5關於重新導向有個容易迷惑人的問題:./a.out > outfile 2>&1./a.out 2>&1 > outfile問兩者區別。自己試了下,    int main()     {       printf("output to stdio\n");       fprintf(stderr,"output to stderr\n");       return 1;     }  結果如下:    qun@ThinkPad

diff和patch

    cat before.txt  輸出:  This is a line to be deleted  This is a line that will be changed  This is a line that will be unchanged  cat after.txt  輸出:  This is a line that has been changed  This is a line that will be unchanged  This is a line that

USBKey的密碼學原理

  首先,大致說下U盾的工作流程。  你的數位憑證有一對,一份在U盾裡的私密金鑰,一份在銀行的公開金鑰(其實兩份銀行都有)。U盾的原理很類似於雙向認證的TLS(SSL)或者其它用到RSA的雙向認證驗證手段,以下步驟可能和U盾實際執行的有所區別,但本質相同:  --銀行先給你一個"衝擊",它包含了隨機數,以及該隨機數HASH,它們都由公開金鑰加密,這樣就可以保證只有你能解密這個"衝擊"  --你計算該隨機數的HASH,並和用私密金鑰解出的HASH,兩者相同後,便可確認銀行的身份  --接下來,以一

我的SPE甘特圖

前言        甘特圖的畫法很多,工具也有很多。我的甘特圖只是需要Excel,甚至可以用Google的表格去做也可以,最重要的是簡單,明了。他所擁有的特性還是讀者自己體會吧。我在這裡只是介紹一個我用的比較順手的方法,供大家參考,也希望大家多提建議,使他更完善。畫法

對象序列化後直接擷取byte[]的方法

有一種應用情境:將對象用Udp廣播出去。UdpClient的Send方法參數類型是byte[]。前天見到有位哥們寫的代碼,居然是將對象序列化成檔案,然後再讀取檔案發送出去,接受則是反過來,將接受到的byte[]寫成檔案,然後讀取檔案再還原序列化。效率低就不用說了,關鍵是占空間,如果寫的是PDA程式,那裡經得起這樣折騰。其實序列化可以藉助MemoryStream,直接將對象序列化到MemoryStream,然後使用MemoryStream的GetBufferf方法便可以獲得byte[].List&

職業程式員必須要有的工作態度(之一)

前些天,帶一個新兵入行。唉,真的無語。說不上能力差,要做的任務,只要時間給長點還是能做出來,但結果總是差那麼一點,例如PDA的介面大部分空間在螢幕之外,列資料賦值錯誤,線程沒有關閉成幽靈線程等等。 下達的任務總是從Google上下載一段相似的就算,不求甚解,也不講求最佳化。有些適應需求的修改,哪怕是一點點,他都觸手無策。眼看任務控制點就快到了,我只能親自上馬。他可好,出去抽煙了。在他出去抽煙的時間,我還發現一個致命的錯誤,病人的血型屬性字典跟其他屬性值混淆了。抽完煙回來,給我說了句話,我終於明白

陌生的yield關鍵字

yield關鍵字有什麼功能,估計大部分人都跟我先前一樣一頭霧水。我對他產生關注是在做一份面試題之後。我查了一下Msdn關於yield 的描述:在迭代器塊中用於向枚舉數對象提供值或發出迭代結束訊號。還是一頭霧水吧。我來說一下我的理解吧,yield在迴圈體中出現,在每次迴圈返回當次運算結果;yield是跟return或者break連用,充當方法輸出的標記。yield return和return的區別: 例如: int n=1;int m=100;while(n<100){    n+=n;  

用params關鍵字增強代碼的可讀性

以前從來沒有接觸過params關鍵字,一直很好奇一些類型的string.Format(...)方法具有無限長的方法參數。有時候被逼用數組代替。發現params關鍵字有,編寫不定長參數的方法很簡單 就是在原先需要不定長常數類型錢加上params就可以了。 例如public int Sum(params int[] narray){    int ret=0;    foreach(int n in narray)    {        ret+=n;    }   return

有感於“用介面線程去更新介面元素”

平常在做Winform的應用程式中,可能很少有人不用到多線程吧?一般說來,我們的背景工作執行緒多和介面的線程(主線程)不在一個線程中,道理也很簡單,在一個線程中的話,較長時間等待的工作會阻塞介面線程,影響介面顯示。下文中我提到的“背景工作執行緒”均指從介面線程引發的新的線程

Razor提高WebPage代碼的易讀性

傳統的asp用的'<%Code

總頁數: 61357 1 .... 4601 4602 4603 4604 4605 .... 61357 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.