程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C#技術內幕 學習筆記

C#技術內幕 學習筆記

編輯:.NET實例教程

引用類型是類型安全的指針,它們的內存是分配在堆(保存指針地址)上的。
String、數組、類、接口和委托都是引用類型。


強制類型轉換與as類型轉換的區別:當類型轉換非法時,強制類型轉換將拋出一個System.InvalidCastException異常,
而as不會拋出異常,它返回一個null值。

用using創建別名:using console = System.Console;

訪問限定符:
public  該成員可以被其他任何類訪問
protected 該成員只能被其派生類訪問
private  該成員只能被本類的其他成員訪問
internal 該成員只能在當前編譯單元的其他成員訪問

帶參數列表和返回值的Main方法:
class Test
{
  public static int Main(string[] args)
  {
    foreach (string arg in args)
    {
    ...
    }
  }
}


構造函數(constructor)包括實例構造函數和靜態構造函數。
構造函數與類名相同,且不能有返回值。例:
class TestClass
{
  TestClass()  //實例構造函數:可以訪問靜態成員和實例成員,用於初始化實例成員
  {
  ...
  }

  static TestClass() //靜態構造函數:只能訪問靜態成員,用於初始化靜態成員
  {
  ...
  }
}

類的靜態成員屬於類所有,不必生成實例就可以訪問,它是在載入包含類的應用程序時創建的,
但靜態方法不能訪問類的實例變量和方法。通常,靜態變量是在定義時就賦初始值的。
類的實例成員屬於類的實例所有,不創建實例對象就無法對其進行訪問,實例成員可以訪問類的
靜態成員和其它實例成員。


調用基類的析構函數:
class A
{
  public A()
  {
  ...
  }
}

class B
{
  public B(): base()  //調用基類的析構函數
  {
  ...
  }
}


常量:其值是在編譯時設定的,必須是數值文字。默認狀態下常量是靜態的。例:
class A
{
  public const double pi = 3.1415;
}


常量是編譯時就確定的值,只讀字段是在運行才能確定的值。比如運行時才能確定的屏幕分辨率。
只讀字段只能在類的析構函數中賦值。

靜態只讀字段:
class A
{
  public static readonly int ScreenWidth;  //靜態只讀字段
  static A()   //靜態析構函數
  {
    ScreenWidth = 1024;  //在靜態析構函數中初始化
  }
}


在類的繼承中,類的析構函數是不會被繼承的。
一個派生類只能從一個基類繼承,不能同時從多個基類繼承,但可以通過繼承多個接口來
達到相同目的。實現多繼承的唯一方法就是使用接口。例:
class MyFancyGrid: Control, ISerializable, IDataBound
{
...
}


密封類是不能繼承的類,抽象類不能被定義為密封類,且密封類的私有成員不能用protected修飾,
只能用private。例:
sealed class A
{
...
}


關鍵字ref和out用於指定用引用方式傳遞方法的參數。
它們的區別是:ref參數必須初始化,而out參數不需要初始化。所以在方法處理代碼依賴參數的
初始化值時使用ref,不依賴初始化值時使用out。
對out參數即使在傳遞前對其進行了初始化,其值也不會傳遞到方法處理函數內部。傳遞時系統
會將其設為未初始化。所以在方法內部必須對out參數進行初始化。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved