c#
相對於c++
的好處之一是:有屬性這個東西,直接能夠讓你使用,而且得到語法的支援,首先我們來看看
c#中如何表示乙個屬性,例如:
class myclass
set
}
}
好了,現在我們可以使用如下的方法來訪問屬性:
myclass myclass;
myclass.myname ="dddd";
這是最普通的方式,另外一種方式就是使用
attributeusage
來定義乙個屬性類,就象系統裡面提供的屬性一樣。
定義自己的屬性類需要從
system.attribute
這個類繼承,然後使用上面的方法來定義屬性,例如:
[attributeusage(attributetargets.property, inherited = true, allowmultiple = true)]
class myattribute:attribute
private string myname = string.empty;
public myname
set }}
這個屬性的使用不同於上面,首先我們需要定義乙個類,例如:
[myattribute (「myname is test」)]
class myclass
[myattribute (「myname is test」)]
實際上構造乙個屬性,
myname
是指定的內容;但這個屬性並不執行,而是在有**呼叫
myclass
的gettype
的getcustomattribute
的時候才真正的建立**。
其實這種屬性是使用反射機制,為類在執行時儲存一些資訊,下面是乙個使用自定義屬性的例子:
using system;
[attributeusage(attributetargets.class|attributetargets.struct,
allowmultiple=true)]
public class author : attribute
public double version;
string name;
public string getname()
}
[author("h. ackerman")]
class firstclass
class secondclass//
沒有定義
author
屬性
[author("h. ackerman"), author("m. knott", version=1.1)]
class steerage
class authorinfo
public static void printauthorinfo(type t)
", t);
attribute attrs = attribute.getcustomattributes(t);
foreach(attribute attr in attrs)
, version ",
a.getname(), a.version);
}
}
}
}
C 使用屬性
我們通常把字段定義為私有的,屬性定義為公共的,通過屬性訪問字段。定義乙個屬性時,型別必須和它所訪問的字段一致。例如 姓名 name為string型別,那麼它對應的屬性name也一定是string型別。屬性本質上是方法,只是與方法不同。可以例項化物件後給屬性賦值,也可以取值,只呼叫屬性即可。不需要訪問...
C 中使用屬性
使用屬性,避免將資料成員直接暴露給外界 item always use properties instead of accessible data members.學習研究.net的早期,經常碰到一些學習c net的朋友問,要屬性這種華而不實的東西做什麼?後來做專案時也時常接到team裡的人的抱怨反...
C 中屬性PropertyInfo的使用
昨天程式設計遇到乙個問題兩個類字段都是二十多個,其中有十多個是相同的,需要將乙個類的字段賦值給另外乙個類,開始的自己想手動的乙個個去賦值,後來想來一下c 基礎知識,用propertyinfo就可以解決類似的問題,寫部落格需要內容詳實,我還是慢慢的c 屬性從頭寫起,先看下屬性的定義吧 屬性定義 它提供...