Time of Update: 2018-12-07
使用者的輸入可能是多種多樣的:你必須在互動控制項中儘可能的驗證輸入。寫一些使用者輸入驗證可能很做作,而且也有出錯的可能,但還是很有必要的。不能太相信使用者的輸入,使用者可能會輸入任何內容導致異常發生,進而進行SQL注入式攻擊。我們不希望任何類似這樣的事情發生。你應該瞭解足夠的資訊來懷疑使用者的輸入。很好,每個人都應該這樣做,這也就是為什麼.Net架構已經擴充了這樣的功能,你可以使用這些功能從而使自己的代碼編寫工作減到最小,因為我們要對使用者輸入的每一塊資料都要進行驗證。.Net架構提供了不同的機
Time of Update: 2018-12-07
如果要問 “哪種集合是最好的?”我的回答是:“視需要而定。”不同的集合有不同的功能特性,並且針對其行為的不同進行了最佳化。.Net Framework支援許多相似的集合:列表、數組、隊列、棧等等。另外,C#支援多維陣列,其效能特點不同於其它的一維數組或者交錯數組。.Net
Time of Update: 2018-12-07
異常是一種的報告錯誤的機制,它可以在遠離錯誤發生的地方進行處理錯誤。所有關於錯誤發生的的資訊必須包含在異常對象中。在錯誤發生的過程中,你可能想把底層的錯誤轉化成詳細的應用程式錯誤,而且不丟失關於錯誤的任何資訊。你須要仔細考慮關於如何在C#應用程式中建立特殊的異常類。第一步就是要理解什麼時候以及為什麼要建立新的異常類,以及如何構造繼承的異常資訊。當開發人員使用你的庫來寫catch語句時,他們是基於特殊的進行時異常在區別為同的行為的。每一個不同的異常類可以有不同的處理要完成: try {Foo( )
Time of Update: 2018-12-07
.Net運行時已經設計好了,一些懷有惡意的代碼不能滲透到遠端電腦上並執行。目前一些分部式系統依懶於從遠程機器上下載和執行代碼。如果你可以通過Internet或者乙太網路來發布你的軟體,或者直接從web上運行,但你須要明白CRL在你的程式集中的一些限制。如果CLR不是完全相信一個程式集,它會限制一些的行為。這些調用代碼要有訪問安全認證(CAS)。從另一方面來說,CLR強制要求基於角色的安全認證,這樣這些代碼才能或者不能在基於一個特殊的角色帳號下運行。安全違例是運行時條件,編譯器不能強制它們。幸運的
Time of Update: 2018-12-07
在編寫自訂類型的時候,即使我們不寫ToString函數,系統也會自動提供ToString函數,例如: public class clsUserInfo { private string strUserName; ……
Time of Update: 2018-12-07
C#多線程:volatile關鍵字的原理2011-05-09 來自:部落格園
Time of Update: 2018-12-07
轉換操作符為類之間引入了一層“替換性(substitutability)”。“替換”意味著一個類的執行個體可以被替換為另一個類的執行個體。這對我們來說可以是一種好處:一個衍生類別的對象可以被當做一個基類對象來使用。例如在經典的Shape類層次中,我們可以建立一個Shape(形狀)基類,並派生出許多子類:Rectangle(長方形)、Ellipse(橢圓)、Circle(圓)等。在任何需要Shape的地方,我們都可以使用一個Circle子類來替換。替換得以實現是因為多態發揮的作用,因為Circle
Time of Update: 2018-12-07
大家可能認為唯讀屬性就只能讀取,調用者不可能更改屬性值。可惜的是,並非所有情況都如此。如果我們建立的屬性返回了一個參考型別,那麼調用者就可以訪問該對象的公有成員,包括那些修改屬性狀態的成員。例如: Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-07
並不是所有的人都須要知道所有的事。也不是所有的類型須要是公用的。對於每個類型,在滿足功能的情況下,應該儘可能的限制存取層級。而且這些存取層級往往比你想像的要少得多。在一個私人類型上,所有的使用者都可以通過一個公用的介面來訪問這個介面所定義的功能。 讓我們回到最根本的情況上來:強大的工具和懶惰的開發人員。VS.net對於他們來說是一個偉大的高產工具。我用VS.net或者C# Builder輕鬆的開發我所有的項目,因為它讓我更快的完成任務。其中一個加強的高產工具就是讓你只用點兩下按鈕,
Time of Update: 2018-12-07
通訊協定的開銷與麻煩就是對資料媒體的如何使用。在通訊過程中可能要不同的使用媒體,例如電話,傳真,地址,和電子郵件。讓我們再回頭來看看上次的訂購情況,當你用電話訂購時,你要回答售貨員的一系列問題:“你可以把第一項填一下嗎?”“這一項的號碼是123-456”"您想訂購多少呢?""三件"
Time of Update: 2018-12-07
在C#中定義常量的方式有兩種,一種叫做靜態常量(Compile-time constant),另一種叫做動態常量(Runtime constant)。前者用“const”來定義,後者用“readonly”來定義。 對於靜態常量(Compile-time constant),它的書寫方式如下:public const int MAX_VALUE = 10;為什麼稱它為靜態常量呢,因為如上聲明可以按照如下理解(注意:如下書寫是錯誤的,會出編譯錯誤,這裡只是為了方便說明)。public static
Time of Update: 2018-12-07
許多.net類庫中的類都提供了兩種不同的處理事件控制代碼的方法。既可以為其添加事件,也可以重寫其基類的事件抽象方法。為什麼要為同一件事提供兩種不同的方法呢?這是為了對應不同的情況。在實現衍生類別的時候,更好的選擇是重寫基類中的抽象方法。 假設我們現在正在編寫一個windows應用程式,這個程式需要對滑鼠按鍵按下的事件做出響應。在自訂的Form類中,我們可以選擇重寫OnMouseDown()事件:Code highlighting produced by Actipro
Time of Update: 2018-12-07
當有問題發生時,它們往往並不是在實驗的時候發生的,機器有輕鬆調試的工具。在很多實際情況中,你不好修正的問題總是發生在使用者的機器上,那裡沒有調試環境,也沒有好的方法計算出問題的情況。在實際情況中,有經驗的開發人員會建立一個方法,讓系統在運行時捕獲儘可能多的資訊。.Net架構已經包含一些類集合,利用這些集合,你可以做一些通用的調試。而且這些類可以在運行時或者編譯時間進行配置。如果你利用它們,你就可以輕鬆的發現在實際運行時的問題。使用架構裡已經存在的代碼,你可以發送一條診斷資訊到一個檔案,或者到調試
Time of Update: 2018-12-07
//1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo();provider.NumberDecimalDigits =intDecLength; //要設定的小數位元double strCashAmt=Convert.ToDouble(this.txtCashAmt.Text); //先把控制項內的值轉成doublethis.txtCashAmt.Text =
Time of Update: 2018-12-07
//方法一: //須添加對System.Web的引用 using System.Web.Security; /// <summary> /// SHA1加密字串 /// </summary> /// <param name="source">源字串</param> /// <returns>加密後的字串</returns>
Time of Update: 2018-12-07
protected void Page_Load(object sender, EventArgs e) { //開啟登入頁面時擷取用戶端cookie值並寫入前台控制項中 HttpCookie cookie = Request.Cookies["name"]; if (cookie == null) { UserName.Text = "";
Time of Update: 2018-12-07
運行時的介面using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace WindowsFormsApplication2{ public partial class Form1 :
Time of Update: 2018-12-07
C#中string和StringBuilder的區別 String用於表示文本,StringBuilder表示值為可變字元序列的類似字串的對象,之所以說是可變的,是因為通過追加、移除、替換或插入字元建立它以後,還可以對其進行修改。同時,在操作長度比較大的字串的時候,使用StringBuilder會更方便。 下面舉例說明其不同之處: (1)定義方式不同 string str = “Hello World”; StringBuilder sb = new
Time of Update: 2018-12-07
System.Decimal 類型是個特殊的類型,他並不直接屬於CLR IL的基本類型,而是C#語言自己定義的。(其他實值型別比如System.Int32都有對應的IL類型int32)因此可以通過Reflector查看關於操作符重載和轉換操作符的方法1. 操作符重載CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->//正:+decimal1
Time of Update: 2018-12-07
擴充方法是C# 3.0中新加入的特性。MSDN中對擴充方法的定義是:擴充方法使您能夠向現有類型“添加”方法,而無需建立新的衍生類別型、重新編譯或以其他方式修改原始類型。以下以對一個字串進行MD5加密為例。如果不使用擴充方法~通常情況下我們寫一個這樣的方法 public static string MD5Encrypt(string str){ return FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");