Effective C# 使用.NET驗證

使用者的輸入可能是多種多樣的:你必須在互動控制項中儘可能的驗證輸入。寫一些使用者輸入驗證可能很做作,而且也有出錯的可能,但還是很有必要的。不能太相信使用者的輸入,使用者可能會輸入任何內容導致異常發生,進而進行SQL注入式攻擊。我們不希望任何類似這樣的事情發生。你應該瞭解足夠的資訊來懷疑使用者的輸入。很好,每個人都應該這樣做,這也就是為什麼.Net架構已經擴充了這樣的功能,你可以使用這些功能從而使自己的代碼編寫工作減到最小,因為我們要對使用者輸入的每一塊資料都要進行驗證。.Net架構提供了不同的機

Effective C# 根據需要選用恰當的集合

如果要問 “哪種集合是最好的?”我的回答是:“視需要而定。”不同的集合有不同的功能特性,並且針對其行為的不同進行了最佳化。.Net Framework支援許多相似的集合:列表、數組、隊列、棧等等。另外,C#支援多維陣列,其效能特點不同於其它的一維數組或者交錯數組。.Net

Effective C# 避免過度使用反射

建立二進位的組件時,同時也意味著你要使用遲後綁定和反射來尋找你所須要的具有特殊功能代碼。反射是一個很有力的工具,而且它讓你可以寫出可動態配置的軟體。使用反射,一個應用程式可以通過添加新的組件來更新功能,而這些組件是在軟體最開始發布時沒有的。這是有利的。       

Effective C# 為應用程式建立特定的異常類

異常是一種的報告錯誤的機制,它可以在遠離錯誤發生的地方進行處理錯誤。所有關於錯誤發生的的資訊必須包含在異常對象中。在錯誤發生的過程中,你可能想把底層的錯誤轉化成詳細的應用程式錯誤,而且不丟失關於錯誤的任何資訊。你須要仔細考慮關於如何在C#應用程式中建立特殊的異常類。第一步就是要理解什麼時候以及為什麼要建立新的異常類,以及如何構造繼承的異常資訊。當開發人員使用你的庫來寫catch語句時,他們是基於特殊的進行時異常在區別為同的行為的。每一個不同的異常類可以有不同的處理要完成: try {Foo( )

Effective C# 優先選擇安全的程式碼

.Net運行時已經設計好了,一些懷有惡意的代碼不能滲透到遠端電腦上並執行。目前一些分部式系統依懶於從遠程機器上下載和執行代碼。如果你可以通過Internet或者乙太網路來發布你的軟體,或者直接從web上運行,但你須要明白CRL在你的程式集中的一些限制。如果CLR不是完全相信一個程式集,它會限制一些的行為。這些調用代碼要有訪問安全認證(CAS)。從另一方面來說,CLR強制要求基於角色的安全認證,這樣這些代碼才能或者不能在基於一個特殊的角色帳號下運行。安全違例是運行時條件,編譯器不能強制它們。幸運的

Effective C# 掌握相關工具與資源

對於C#以及.Net來說這是激動人心的時候。這些工具目前還是比較新的,整個社區都在學習如何使用這些工具。一些資源可以協助你提高你的知識,以及為.Net和C#建立一個更大的知識社區。這些工具是我每天都向C#開發人員推薦的。關於C#實踐的全部內容還在寫作當中,跟進它們而且不斷瞭解相關的內容。第一個應該在每一個C#開發人員的工具箱的工具是NUnit,

Effective C# 提供一個有意義的ToString函數

在編寫自訂類型的時候,即使我們不寫ToString函數,系統也會自動提供ToString函數,例如:    public class clsUserInfo    {        private string strUserName;        ……   

Effective C# 瞭解ECMA標準

ECMA標準是C#語言所有功能的官方說明。ECMA-334定義了C#語言1.0的標準,你可以從The C# Programming Language這本書上學習C#2.0的計劃(譯註:現在已經不是計划了),這本書的作者是Anders Hejlsberg, Scott Wiltamuth, 和 Peter Golde (Addison-Wesley,

Effective C# 使用as和is操作符來做類型轉換

在程式中,進行類型轉換是常見的事。那麼在C#中支援以前語言的類型轉換方法,即用類型名進行強行轉換,例如:object objTest = new NewType();NewType newValue = (NewType)objTest; 但是這樣轉換,有個嚴重的問題,就是在把objTest強轉換成NewType類型對象的時候,這個過程是不安全的,因此需要用try-catch語句來進行保護。這樣一來,比較安全的代碼方式應該如下所示。    object objTest = new

Effective C# 避免強制轉換操作符

轉換操作符為類之間引入了一層“替換性(substitutability)”。“替換”意味著一個類的執行個體可以被替換為另一個類的執行個體。這對我們來說可以是一種好處:一個衍生類別的對象可以被當做一個基類對象來使用。例如在經典的Shape類層次中,我們可以建立一個Shape(形狀)基類,並派生出許多子類:Rectangle(長方形)、Ellipse(橢圓)、Circle(圓)等。在任何需要Shape的地方,我們都可以使用一個Circle子類來替換。替換得以實現是因為多態發揮的作用,因為Circle

Effective C# 儘可能實現短小簡潔的函數

對於有經驗的程式員來說,不論在接觸C#之前使用什麼語言,都有一些提高代碼效率的方法。不過有些做法雖然在之前的語言中有效,但在.Net環境中卻適得其反。     

Effective C# 限制類型的可見度

並不是所有的人都須要知道所有的事。也不是所有的類型須要是公用的。對於每個類型,在滿足功能的情況下,應該儘可能的限制存取層級。而且這些存取層級往往比你想像的要少得多。在一個私人類型上,所有的使用者都可以通過一個公用的介面來訪問這個介面所定義的功能。        讓我們回到最根本的情況上來:強大的工具和懶惰的開發人員。VS.net對於他們來說是一個偉大的高產工具。我用VS.net或者C# Builder輕鬆的開發我所有的項目,因為它讓我更快的完成任務。其中一個加強的高產工具就是讓你只用點兩下按鈕,

Effective C# 建立大粒度的Web API

通訊協定的開銷與麻煩就是對資料媒體的如何使用。在通訊過程中可能要不同的使用媒體,例如電話,傳真,地址,和電子郵件。讓我們再回頭來看看上次的訂購情況,當你用電話訂購時,你要回答售貨員的一系列問題:“你可以把第一項填一下嗎?”“這一項的號碼是123-456”"您想訂購多少呢?""三件"     

Effective C# 定義常量的兩種方法

在C#中定義常量的方式有兩種,一種叫做靜態常量(Compile-time constant),另一種叫做動態常量(Runtime constant)。前者用“const”來定義,後者用“readonly”來定義。 對於靜態常量(Compile-time constant),它的書寫方式如下:public const int MAX_VALUE = 10;為什麼稱它為靜態常量呢,因為如上聲明可以按照如下理解(注意:如下書寫是錯誤的,會出編譯錯誤,這裡只是為了方便說明)。public static

Effective C# 重寫優於事件處理器

許多.net類庫中的類都提供了兩種不同的處理事件控制代碼的方法。既可以為其添加事件,也可以重寫其基類的事件抽象方法。為什麼要為同一件事提供兩種不同的方法呢?這是為了對應不同的情況。在實現衍生類別的時候,更好的選擇是重寫基類中的抽象方法。      假設我們現在正在編寫一個windows應用程式,這個程式需要對滑鼠按鍵按下的事件做出響應。在自訂的Form類中,我們可以選擇重寫OnMouseDown()事件:Code highlighting produced by Actipro

Effective C# 合理使用.NET運行時診斷

當有問題發生時,它們往往並不是在實驗的時候發生的,機器有輕鬆調試的工具。在很多實際情況中,你不好修正的問題總是發生在使用者的機器上,那裡沒有調試環境,也沒有好的方法計算出問題的情況。在實際情況中,有經驗的開發人員會建立一個方法,讓系統在運行時捕獲儘可能多的資訊。.Net架構已經包含一些類集合,利用這些集合,你可以做一些通用的調試。而且這些類可以在運行時或者編譯時間進行配置。如果你利用它們,你就可以輕鬆的發現在實際運行時的問題。使用架構裡已經存在的代碼,你可以發送一條診斷資訊到一個檔案,或者到調試

C#保留小數位的方法集合

//1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo();provider.NumberDecimalDigits =intDecLength; //要設定的小數位元double strCashAmt=Convert.ToDouble(this.txtCashAmt.Text); //先把控制項內的值轉成doublethis.txtCashAmt.Text =

C#一個字串的加密與解密

     設計應用程式時,為了防止一些敏感資訊的泄露,通常需要對這些資訊進行加密。以使用者的登入密碼為例,如果密碼以明文的形式儲存在資料表中,很容易就會被人發現;相反,如果密碼以密文的形式儲存,即使別人從資料表中發現了密碼,也是加密之後的密碼,根本不能使用。通過對密碼進行加密,能夠極大地提高系統的保密性。using System;using System.Collections.Generic;using System.Linq;using System.Text;using

C#密碼編譯演算法匯總

//方法一: //須添加對System.Web的引用 using System.Web.Security; /// <summary> /// SHA1加密字串 /// </summary> /// <param name="source">源字串</param> /// <returns>加密後的字串</returns>

C#寫入登陸Cookies

protected void Page_Load(object sender, EventArgs e) { //開啟登入頁面時擷取用戶端cookie值並寫入前台控制項中 HttpCookie cookie = Request.Cookies["name"]; if (cookie == null) { UserName.Text = "";

總頁數: 4314 1 .... 392 393 394 395 396 .... 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.