大家看一個結構體定義: struct Book { public string author; public Book(string author) { this.author = author; } public string Author { get { return author; } set { author = value;
這個DefaultValueAttributte特性時常令大家比較疑惑,特別是看了MSDN文檔中關於這個類的說明,大家可能就更加的疑惑了,文檔中關於DefaultValueAttribute特性的說明如下: 指定屬性 (Property) 的預設值。 所以大家可能都以為通過應用這個特性就會設定屬性的預設值,於是大家可能編寫了類似的代碼: public class Child { private int i=0; [DefaultValue(100)]
一般在C#中,想“暴露”類中的某些資料給使用者可以使用兩種方式來實現,一種是使用公有欄位,另外一種是使用屬性來實現,下面我列舉一些代碼來比較這兩種實現:1,使用公有欄位:public class Student{ public string Name;} 2,使用屬性: public class Student { private string _name; public string Name { get
問題起源於下面這段有問題的代碼: class Program { static void Main(string[] args) { Distance a = new Distance(5.3); Distance b = a++; Console.WriteLine("b.Measure={0}, a.Measure={1}", b.Measure, a.Measure);
在一個控制項中使Tab鍵作為一般的輸入鍵來觸發KeyDown,KeyUp事件,需要自訂一個新控制項 ,然後重寫IsInputKey 方法using System;using System.Windows.Forms;public class MyTextBox :System.Windows.Forms.TextBox{// Override IsInputKey method to identify the Special keysprotected override bool
大家都知道,只有在定義事件的類中才能觸發事件。今天看到一個資料上說就是在定義事件的類的嵌套類中也不能觸發事件!為了搞清楚原因,我進行了如下測試: class Program { static void Main(string[] args) { MyClass.Test t = new MyClass.Test(); t.Func(); } } public class
實際上過去我也寫過類似的主題,這裡把各種方法總結一下,內容的確基礎了一些,所以這篇文章是寫給剛剛學習C#的同行們的,希望對大家有些協助吧!很抱歉,這篇文章沒有詭異的bug來勾起大家的興趣,但是下篇文章我會努力寫些有趣的主題的!在表單間傳遞資料的方法比較多:1,在子表單中自訂一個建構函式,參數類型是主表單,當要顯示子表單的時候,就用這個建構函式來執行個體化子表單,然後把this指標傳進去,說起來太抽象了,我大概一寫大家應該就明白了: public class frmMain:Form {
如果想在類中定義某些常量欄位,一般有兩種選擇,可以定義成const,也可以定義成readonly,這兩種方式如何取捨呢?在絕大多數情況下,readonly是要優於const的,因為readonly可以帶來更大的靈活性!一般我們可以認為const是編譯時間常量,也就是說你引用const欄位,在編譯的時候就被替換成相應的常量值了!例如:public class MyClass{ public const int Count=0;} static void Main(string[]
大家都知道,抽象類別是不可以執行個體化的,那麼在抽象類別中是否可以有建構函式呢?很多初學者都有類似的疑問! 答案是肯定的,而且如果我們自己沒有定義的話,編譯器還會為我們產生一個預設的建構函式的,看這段代碼: public abstract class MyAbstractClass { }我們自己並沒有自己定義建構函式,我們用ILDasm工具來看看產生的IL代碼:.method family hidebysig specialname rtspecialname