C 中的域與屬性

2021-07-07 01:57:25 字數 1504 閱讀 5222

c#中類成員變數的定義分為兩種:域(field)與屬性(property),屬性為公有變數,以get,set訪問器進行訪問,域多為私有變數,非get、set訪問器進行訪問,如以下類的的域為成員name,而屬性為val.

class customer 

#endregion

};

當我們獲得乙個類物件時,我們就可以通過反射機制來獲取該類的成員及內容:

customer obj = new customer();

obj.name = "123456";

obj.val = 3;

type objtype = obj.gettype();

propertyinfo l = objtype.getproperties();

foreach (var item in l) :",item.name,item.getvalue(obj,null));

}fieldinfo fields = objtype.getfields();

foreach (var item in fields) :", item.name, item.getvalue(obj));

}

我們也可以建立該類的物件:

//customer cs = (customer)program.getobj(obj);

static object getobj(object obj)

:", item.name, item.getvalue(obj, null));

item.setvalue(instance, item.getvalue(obj, null), null);

}fieldinfo fields = objtype.getfields();

foreach (var item in fields)

:", item.name, item.getvalue(obj));

item.setvalue(instance, item.getvalue(obj));

}return instance;

}

利用這些反射特性就可以在執行中生成新的物件或構造屬性attribute驗證器了。如果我們將類寫成如下格式:

[attributeusage(attributetargets.field)]

class check : attribute

};class customer

#endregion

};

通過check來驗證欄位的合法性,利用反射來進行統一驗證:

fieldinfo fields = objtype.getfields();

foreach(var item in fields) ,max length:", item.name, c.maxlength);

}}

最後乙個類的驗證工作就可以這樣方便的實現了。

C 中的變數 字段 域 屬性 屬性過程

在c 中 域 表示與物件或類相關聯的變數,修飾符不論是不是public。與字段類似 字段 表示與物件或類相關聯的變數。通常來講修飾符是public的成員變數稱為字段,而private更適合說是區域性變數。與域類似 屬性 表示域或字段的自然擴充套件,使得在保證封裝性的基礎上實現了訪問私有成員的便捷性。...

C 中的域(Field)和屬性(Property)

c 中的域 field 和屬性 property 一般的命名習慣 field 對應的屬性 或許狹義地進行區分一下,get和 set的實現的稱為屬性,其他的變數稱為資料成員。c 將屬性從其他語言中的一種特殊約定提公升成為一種第一等 first class 的語言特性。屬性在使我們可以將資料成員暴露為公...

C中的鏈結屬性及作用域

如果相同的識別符號出現在幾個不同的原始檔中時,它們是表示相同的實體,還是不同的實體。識別符號的鏈結屬性決定如何處理在不同檔案中出現的識別符號。識別符號的作用域與它的鏈結屬性有關。鏈結屬性一般有三種 external 外部,internal 內部,none 無。沒有鏈結屬性的識別符號總是被當作單獨的個...