Time of Update: 2017-02-27
使用 Convert 類:ToBoolean -> boolToByte -> byteToChar -> charToDateTime -> DateTimeToDecimal -> decimalToDouble -> doubleToInt16 -> shortToInt32 -> intToInt64 -> longToSByte -> sbyteToSingle -> floatToString
Time of Update: 2017-02-27
基本: . () [] x++ x-- new typeof checked unchecked -> ::一元: + - ! ~ ++x --x (T)x True False & sizeof乘除: * / %加減: + -移位: << >>關係: < > <= >= is as 相等: == !=邏輯: & ^ |條件: && ||賦值: = += -= *= /= %= &= |= ^=
Time of Update: 2017-02-27
位於return語句之後的代碼是不會被執行的。在下面給出的第1個程式中,你將發現在C#中有一個 WriteLine函數調用,但是在我們的IL代碼中卻看不到。這是因為編譯器意識到任何return之後的語句都 不會被執行,從而,也就不用將其轉換到IL中了。a.csclass zzz{public static void Main(){return;System.Console.WriteLine("hi");}}a.il.assembly mukhi {}.class
Time of Update: 2017-02-27
-3-在IL中,標號(label)是一個末尾帶有冒號(即:)的名稱。它使我們能夠從代碼的一部 分無條件地跳轉到另一部分。我們經常在由反編譯器產生的IL代碼中看到這個標號。例如:IL_0000: ldstr "hi"IL_0005: call void [mscorlib]System.Console::WriteLine(class System.String)IL_000a: call void zzz::abc()IL_000f:
Time of Update: 2017-02-27
-2-如果你真的想要理解C#代碼,那麼最好的方法就是通過理解由C#編譯器產生的程式碼。本章 和下面兩章將關注於此。我們將用一個短小的C#程式來揭開IL的神秘面紗,並解釋由編譯器產生 的IL代碼。這樣,我們就可以“一箭雙鵰”:首先,我們將揭示IL的奧妙,其次,我們將會更 加直觀地理解C#程式設計語言。我們將首先展示一個.cs檔案,並隨後通過C#編譯器以IL編寫一個程式 。它的輸出和cs檔案是相同的。輸出將會顯示IL代碼。這會增強我們對C#和IL的理解。好吧,不再囉嗦,
Time of Update: 2017-02-27
1-我們用C#、VB.NET語言編寫的代碼最終都會被編譯成程式集或IL。因此用VB.NET編寫的代碼 可以在C#中修改,隨後在COBOL中使用。因此,理解IL是非常有必要的。一旦熟悉了IL,理解.NET 技術就不會有障礙了,因為所有的.NET語言都會編譯為IL。IL是一門非語言相關。IL是先發明的,隨後才有 了C#、VB.NET等語言。我們將在一個短而精闢的程式中展示IL。我們還假設讀者至少熟悉一
Time of Update: 2017-02-27
主題:這篇文章我來說下屬性(Properties)和欄位在C#中的關係。首先申明一下,這裡講的屬性就是通 常說的包含get,或者是set訪問器的屬性,不是屬性 (Attribute)。我們寫程式的時候大多都會用到實體 類,而產生實體類,我們都會申明一些常規屬性或者是自動實作屬性。至於到底選用哪一種屬性,或者 說是否可以直接用欄位代替呢?常規屬性和自動實現屬性的區別:一個完整的常規屬性由以下幾部分構成:1:私人欄位,用來儲存變數(備份存放區),這個欄位之所以是私人的,是為了讓它只能通過屬性來賦值
Time of Update: 2017-02-27
一年多前,我去面試一家印度公司,做C++的,待遇不錯。其中一個題目是讓我介紹 vitual base class, 我很久沒看C++教材了,突然咯噔一下,這是個啥東東,好像很熟悉,但從來沒用過,反正想不 起來了。用本山大叔的話說,我啥時給你送過秋波啊,秋波是啥玩意兒?是啊, vitual base class 是 啥玩意兒呢?回家一翻書,原來如此。現在總結記錄一下,“以免你忘記”(《馬語者》)virtual關鍵字在 C++ 和 C#中都能聲明 virtual
Time of Update: 2017-02-27
這篇文章我想把我對is和as操作符的理解匯總一下,來複習下C#基礎。is操作符:檢查對象是否與給定類型相容。說明:1>:如果所提供的運算式非空,並且所提供的對象可以強制轉換為所提供的類型而不會導致引發異 常,則 is 運算式的計算結果將是 true,否則返回false。1):運算式為空白:返回false//運算式為空白object oo = null;bool isstudent3 = oo is student;2):運算式內容不為空白,但強制轉換類型時發生異常,返回falseoo =
Time of Update: 2017-02-27
幾天前在博問中看到一個C# Socket問題,就想到筆者2004年做的一個省級交通流量接收伺服器項目,當時的基本求如下:接收自動觀測裝置通過無線網卡、Internet和Socket上報的交通量資料包 全年365*24啟動並執行自動觀測裝置5分鐘上報一次觀測資料,每筆記錄約2K大小
Time of Update: 2017-02-27
同步通訊端通訊Socket支援下的網上點對點的通訊服務端實現監聽串連,用戶端實現發送串連請求,建立串連後進行發送和接收資料的功能伺服器端建立一個socket,設定好原生ip和監聽的連接埠與socket進行綁定,開始監聽串連請求,當 接收到串連請求後,發送確認,同用戶端建立串連,開始與用戶端進行通訊。用戶端建立一個socket,設定好伺服器端的IP和提供服務的連接埠,發出串連請求,接收到服務的確認
Time of Update: 2017-02-27
最近在做一個圖片查看器,由於使用一般的PctureBox,在效能和縮放控制上都無法滿足預期的要求,因此所有組件的呈現均是通過重寫控制項的OnPaint事件來繪製。在查看gif圖片時發現Graphics.DrawImage只呈現第一幀,無法滿足預期要求,因此經過摸索尋找到瞭解決自繪gif的較好辦法。這裡介紹一個.net自身攜帶的類ImageAnimator,這個類類似於控制動畫的時間軸,使用ImageAnimator.CanAnimate可以判斷一個圖片是否為動畫,調用ImageAnimator.
Time of Update: 2017-02-27
1.靜態成員和非靜態成員的區別?2.const 和 static readonly 區別?3.extern 是什麼意思?4.abstract 是什麼意思?5.internal 修飾符起什麼作用?6.sealed 修飾符是幹什麼的?7.override 和 overload 的區別?8.什麼是索引指標?9.new 修飾符是起什麼作用?10.this 關鍵字的含義?11.可以使用抽象函數重寫基類中的虛函數嗎?12.密封類可以有虛函數嗎?13.什麼是屬性訪問器?14.abstract 可以和
Time of Update: 2017-02-27
介面只聲明、無實現、不能執行個體化;介面可包含方法、屬性、事件、索引器, 但無欄位;介面成員都是隱式的 public, 不要使用存取修飾詞;類、結構和介面都可以繼承多個介面;繼承介面的類必須實現介面成員, 除非是抽象類別;類實現的介面成員須是公用的、非靜態.入門樣本:using System;interface MyInterface{ int Sqr(int x);}class MyClass : MyInterface{ public int Sqr(int x) { return
Time of Update: 2017-02-27
using System;class MyClass{ private int FNum; public delegate void MyDelegate(int n); /* 委託是事件的前提 */ public event MyDelegate MyEvent; /* 用 event 關鍵字根據已有的委託聲明事件 */ /* 假如是在給 Num 賦值時觸動事件 */ public int Num { get { return FNum; }
Time of Update: 2017-02-27
通過索引器可以方便使用類中的數組(或集合)成員:using System;class MyClass{ private float[] fs = new float[3] { 1.1f, 2.2f, 3.3f }; /* 屬性 */ public int Length { get { return fs.Length; } set { fs = new float[value]; } } /* 索引器 */ public float
Time of Update: 2017-02-27
抽象類別不能直接執行個體化:using System;abstract class MyClass{}class Program{ static void Main() { /* 抽象類別不能直接執行個體化, 下面這樣會出錯 */ MyClass obj = new MyClass(); Console.ReadKey(); }}但抽象類別可以通過子類執行個體化:using System;abstract class Parent { }class
Time of Update: 2017-02-27
建構函式與解構函式:using System;class MyClass{ private int FNum; public int Num { get { return FNum; } } /* 建構函式沒有傳回值, 無參的建構函式是預設的 */ public MyClass() { this.FNum = 2009; } /* 可以有多個參數不同的建構函式 */ public MyClass(int x) { this.FNum = x;
Time of Update: 2017-02-27
繼承:using System;class Parent{ public void Msg() { Console.WriteLine("Parent"); }}class Child : Parent { }class Program{ static void Main() { Parent ObjParent = new Parent(); Child ObjChild = new Child(); ObjParent.Msg(); /
Time of Update: 2017-02-27
所有類預設繼承於 System.Object(或叫 Object):using System;class MyClass1{}class MyClass2 : Object{}class MyClass3 : System.Object{}class Program{ static void Main() { MyClass1 obj1 = new MyClass1(); MyClass2 obj2 = new MyClass2(); MyClass3 obj3