积极答复者
屬性(property)是對象, 還是get / set 函數?

问题
-
httpRequest.Headers.Add("Authorization",
"Basic" + Convert.ToBase64String(new System.Text.ASCIIEncoding().GetBytes(usernamePassword)));
我的理解是 成員函數. Add(...) 是跟在 類 後面的 如: 對象名 . 成員
Headers 是屬性, 如果屬性是get / set 函數, 那麼 函數 是不會有 成員 的,
因為 成員(Add) 只有 類 才有
求高人指出理解錯處!!
- 已编辑 慕容嘉美 2012年4月26日 7:11
- 已移动 Helen Zhao 2012年4月26日 8:09 (发件人:Visual C++)
答案
-
是的,属性只能使用“=”进行赋值。可是你是否考虑过如果这个属性返回的是一个类的实体,那么这个实体具备某个方法呢?
证明——使用反射代码工具查看:
public NameValueCollection Headers { get { this.EnsureHeaders(); if (this._flags[8]) { this._flags.Clear(8); this.ValidateHttpValueCollection(this._headers, RequestValidationSource.Headers); } if (this._flags[65536]) { this._flags.Clear(65536); this.ValidateCookielessHeaderIfRequiredByConfig(this._headers["AspFilterSessionId"]); } return this._headers; } }
因为Headers是NameValueCollection,所以肯定有Add方法。- 已标记为答案 Bob ShenModerator 2012年5月9日 3:30
-
C#提供的属性 { get; set; } 其实和Java中手动实现getter和setter方法是类似的,例如:
Collection<T> GetXXX()
void SetXXX(Collection<T>)
实际上操作的都是类中的私有成员。这一点可以通过查看编译后的代码得知。
当调用GetXXX()方法时,实际上返回了一个指向Collection<T>类型实例的引用,而这个Collection<T>类型"恰好"有一些成员,比如Add(T)、Count、Items等等,所以你就可以直接通过getter来操作这个对象了。
说的再简单些,方法(函数)没有成员,但是方法的返回值有
共同努力,共同提高
kaedei#live.cn My BLOG- 已标记为答案 Bob ShenModerator 2012年5月9日 3:30
全部回复
-
horaintom你好,
这个是C#的问题,所以我要把它移到Visual C# 论坛。
谢谢你的谅解!
Helen Zhao [MSFT]
MSDN Community Support | Feedback to us
-
是的,属性只能使用“=”进行赋值。可是你是否考虑过如果这个属性返回的是一个类的实体,那么这个实体具备某个方法呢?
证明——使用反射代码工具查看:
public NameValueCollection Headers { get { this.EnsureHeaders(); if (this._flags[8]) { this._flags.Clear(8); this.ValidateHttpValueCollection(this._headers, RequestValidationSource.Headers); } if (this._flags[65536]) { this._flags.Clear(65536); this.ValidateCookielessHeaderIfRequiredByConfig(this._headers["AspFilterSessionId"]); } return this._headers; } }
因为Headers是NameValueCollection,所以肯定有Add方法。- 已标记为答案 Bob ShenModerator 2012年5月9日 3:30
-
C#提供的属性 { get; set; } 其实和Java中手动实现getter和setter方法是类似的,例如:
Collection<T> GetXXX()
void SetXXX(Collection<T>)
实际上操作的都是类中的私有成员。这一点可以通过查看编译后的代码得知。
当调用GetXXX()方法时,实际上返回了一个指向Collection<T>类型实例的引用,而这个Collection<T>类型"恰好"有一些成员,比如Add(T)、Count、Items等等,所以你就可以直接通过getter来操作这个对象了。
说的再简单些,方法(函数)没有成员,但是方法的返回值有
共同努力,共同提高
kaedei#live.cn My BLOG- 已标记为答案 Bob ShenModerator 2012年5月9日 3:30