成員基礎和常量

來源:互聯網
上載者:User

CLR中的類型包括如下幾種:常量,欄位,執行個體構造器,類型構造器,方法,操作符重載,轉換操作符,屬性,事件,類型。

下面我們看段代碼,並且看一看它的IL代碼

using System;
public sealed class SomeType ...{                                             // 1

private class SomeNestedType ...{ }                                        // 2

private const Int32 SomeConstant = 1;                                  // 3
private readonly Int32 SomeReadOnlyField = 2;                   // 4
private static Int32 SomeReadWriteField = 3;                     // 5

static SomeType() ...{ }                                                        // 6

public SomeType() ...{ }                                                        // 7
public SomeType(Int32 x) ...{ }                                              // 8

private String InstanceMethod() ...{ return null; }                   // 9
public static void Main() ...{}                                                    // 10

public Int32 SomeProp ...{                                                        // 11
get ...{ return 0; }                                                                      // 12
set ...{ }                                                                                    // 13
}

public Int32 this [String s] ...{                                                   // 14
get ...{ return 0; }                                                                       // 15
set ...{ }                                                                                    // 16
}

public event EventHandler SomeEvent;                                   // 17
}

 

從上面的IL代碼我們可以看到,屬性,索引器和事件都會被轉換成相應的方法。只要能應用在方法上的特性我們都可以應用在其上面。

說一下靜態類:可以把靜態類看成是工具類,如果查看IL代碼我們會發現編譯器會自動給靜態類加上abstract和sealed特性。

常量就是在初始化賦值後就不可以更改的欄位,在c#中可以使用關鍵字const和readonly,有什麼區別呢?

const:const在編譯後就直接替換成了具體的數值。比如一個程式需要引用程式集A中定義的常量field=500;那麼在程式編譯完之後我們將找不到field這個名稱,只能看到500這個數值。如果我們重新編譯A程式集,把field改成600,那麼運行程式,仍然會使用500這個數值。

readonly:那就不用多說什麼了,解決了上面的問題。

在實際應用中需要根據自己的需要定義常量。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.