特性 (電腦科學)
此條目需要補充更多來源。 (2022年4月6日) |
電腦科學中,特性(英語:attribute)是一種規格,用於定義對象、元素或檔案的屬性(property),它也常被譯作「屬性」。也用作指向這樣的實例或給實例設定值(即特性可以讀寫訪問)。特性可以更準確地理解為元資料。 特性通常是屬性的屬性(property of a property)。但在實際使用中,依所討論的技術領域不同,特性與屬性可等價地混為一談。對象的特性通常是名字與值組成;元素的特性通常是類型或類名;檔案的特性通常是檔名與副檔名。
各領域的用法
[編輯]如果一個元素被視作另一實體(例如CUSTOMER
)的一個屬性(property,例如CUSTOMER_NAME
),則這個元素自身可以有零或多個特性attributes(或屬性properties) ,如CUSTOMER_NAME
可有TYPE = "KINDOFTEXT"
。
C#
[編輯]C#語言中,特性是元資料,附加於欄位或代碼塊,如程式集(assemblies)、成員變數、資料類型,等價於Java註解。編譯器與反射式編程可訪問特性。
開發者可以決定把特性作為元資料,專門用於表示與給定應用程式,類和成員有關的,與實例無關的各類資訊。開發者也可以決定把一些特性暴露為屬性(properties),用作更大的應用程式框架的一部分。
特性可以實現為類(衍生自System.Attribute)。可用作CLR服務,比如COM互操作、remoting、序列化,可在執行時查詢。
下例在C#中定義特性:
[Obsolete("Use class C1 instead", IsError = true)] // causes compiler message saying
public class C {...} // that C is obsolete
public class ObsoleteAttribute: Attribute { // class name ends with "Attribute"
public string Message{ get; } // but can be used as "Obsolete"
public bool IsError{ get; set; }
public ObsoleteAttribute() {...}
public ObsoleteAttribute(string msg) {...}
public ObsoleteAttribute(string msg, bool error) {...}}
[Obsolete]
[Obsolete("This is obsolete")]
[Obsolete("This is obsolete", false)]
[Obsolete("This is obsolete", IsError = false)]
位置參數如上例中的string類型首參,是特性類別的建構函數的實參。具名參數,如上例中的Boolean實參,是特性類的屬性(property)。[1]
HTML & JavaScript
[編輯]當一個checkbox變化時,顯示被checked的特性與屬性:
<!doctype html>
<html lang="en">
<head>
<body>
<input name="food" type="meal" id="meal">
<meta charset="utf-8">
<title>attr demo</title>
<style>
p { border;1px solid black;
font-family; arial, sans-serif;
text-align center;
}
b {
color: blue;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<input id="check1" type="checkbox" checked="checked">
<label for="check1">Check me</label>
<p></p>
<script>
$( "input" )
.change(function() {
var $input = $( this );
$( "p" ).html( ".attr( 'checked' ): <b>" + $input.attr( "checked" ) + "</b><br>" +
".prop( 'checked' ): <b>" + $input.prop( "checked" ) + "</b><br>" +
".is( ':checked' ): <b>" + $input.is( ":checked" ) + "</b>" );
})
.change();
</script>
</body>
</html>
點擊前
[編輯].attr( 'checked' ): checked
.prop( 'checked' ): false
.is( ':checked' ): false
點擊後
[編輯].attr( 'checked' ): checked
.prop( 'checked' ): true
.is( ':checked' ): true
多值資料庫
[編輯]許多非關係型資料庫或多值資料庫系統,表對應於檔案,行對應於item,列對應於特性。
XML
[編輯]XML中,一個特性是一種標記結構,由名字/值對組成,存在於一個start-tag或empty-element tag中。
參見
[編輯]參考文獻
[編輯]- ^ Mössenböck, Hanspeter. Advanced C#: Variable Number of Parameters (PDF). http://ssw.jku.at/Teaching/Lectures/CSharp/Tutorial/: Institut für Systemsoftware, Johannes Kepler Universität Linz, Fachbereich Informatik: 44. 2002-03-25 [2011-08-08]. (原始內容存檔 (PDF)於2011-09-20).