程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 語言規范--1.14 屬性

C# 語言規范--1.14 屬性

編輯:關於C語言
規范

  C# 是一種命令式語言,但像所有命令式語言一樣,它具有某些聲明性元素。例如,通過將類中的方法聲明為 public、protected、internal、protected internal 或 private,指定它的可訪問性。C# 使此功能一般化,以便程序員可以創造出一種新的聲明性信息,將此聲明性信息附加到各種程序實體,並在運行時檢索此聲明性信息。程序通過定義和使用屬性(第 17 節)來描述這類額外的聲明性信息。

  例如,一個框架也許會定義一個可放置在程序元素(如類和方法)上的 HelpAttribute 屬性,使開發人員能夠提供從程序元素到其文檔的映射。示例

using System;
[AttributeUsage(AttributeTargets.All)]
public class HelpAttribute: Attribute
{
   public HelpAttribute(string url) {
      this.url = url;
   }
   public string Topic = null;
   private string url;
   public string Url {
      get { return url; }
   }
}

  定義了一個名為 HelpAttribute 的屬性類,它具有一個定位參數 (string url) 和一個命名參數 (string Topic)。正如第 17.1 節中所解釋的,該屬性可以通過它的完整名稱 HelpAttribute 或通過它的隱式簡稱 Help 引用。定位參數由該屬性類的公共實例構造函數的形參定義,命名參數則由屬性類的公共非靜態讀寫字段和對應的屬性定義。

  示例

[Help("http://www.microsoft.com/.../Class1.htm")]
public class Class1
{
   [Help("
http://www.microsoft.com/.../Class1.htm", Topic = "F")]
   public void F() {}
}

  顯示 Help 屬性的幾種用法。

  在運行時可以利用反射支持檢索給定程序元素的屬性信息。示例

using System;
class Test
{
   static void Main() {
      Type type = typeof(Class1);
      object[] arr = type.GetCustomAttributes(typeof(HelpAttribute), true);
      if (arr.Length == 0)
         Console.WriteLine("Class1 has no Help attribute.");
      else {
         HelpAttribute ha = (HelpAttribute) arr[0];
         Console.WriteLine("Url = {0}, Topic = {1}", ha.Url, ha.Topic);
      }
   }
}

  檢查 Class1 是否具有 Help 屬性,如果具有該屬性,則寫出關聯的 Topic 和 Url 值。

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