C#中的許多代碼示例包含get
和set
代碼塊。他們的目的是什麼?我複製這些塊,它們出現在示例代碼中,但不知道它用於什麼。有人可以向我解釋這個嗎?get:set的目的是什麼?
-4
A
回答
0
在英語中,他們是制定者和獲得者。
希望你能教給自己封裝,封裝,封裝和setter獲得提升。
再次用簡單的英語,setter和getters讓你能夠訪問你定義的屬性。
2
public int foo { get; set; }
這定義了一個屬性。它基本上就像一個公共領域,但當涉及到反思時就不一樣了。在C#/ .NET中,通常使用屬性作爲公共事物。您可以將它與Java中的getter/setter方法進行比較。
的真棒事情現在是,你還可以使用自定義的得到 /集代碼或使set
比get
不太明顯。這樣可以讓getter/setter方法的優點沒有方法調用的醜陋而不是屬性訪問。
public int foo {
get { return this.some_foo; }
set { this.some_foo = value; this.run_code_after_change(); }
};
4
getter和setter方法讓你一對函數組合成一個屬性,讓你使用一種語法,看起來像一個成員訪問表達式或替代語法的分配,看起來像一個明確的函數調用。
這裏是一個小例子:而不是這個
class Example {
private int x;
public int GetX() {return x;}
public void SetX(int value) { x = value;}
}
Example e = new Example();
e.SetX(123);
Console.WriteLine("X = {0}", e.GetX());
他們讓你這樣做:
class Example {
public int X {get;set;}
}
Example e = new Example();
e.X = 123;
Console.WriteLine("X = {0}", e.X);
的第二代碼片段的語法更容易閱讀,因爲X
看起來像變量。同時,第二個片段提供了與encapsulation相同的級別,讓您隱藏屬性後面的實現。
3
你的意思是這個?:
public int SomeValue { get; set; }
這基本上是這樣的句法簡化:
private int someValue;
public int SomeValue
{
get { return someValue; }
set { someValue = value; }
}
這本身就是基本上這個簡寫:
private int someValue;
public int GetSomeValue() { return someValue; }
public void SetSomeValue(int value) { someValue = value; }
(雖然編譯器在執行此操作時使用不同的約定來表示事物的名稱。)
因爲它涉及到OOP,所以這是數據的封裝。這個想法是對象應該隱藏自己的數據並公開功能,而不是直接暴露數據。所以你不一定直接從對象外部修改someValue
。您在對象上調用方法併爲其提供一個值。對象在內部處理其數據的實際存儲。
0
get
和set
是一種語法糖。它是實現函數的可讀性更強的方法,不需要參數,您可以在其中插入驗證(在setter中)或在getter中的字段上進行計算。括號在功能上是無用的。
相關問題
- 1. 什麼是access_token,什麼是使用目的或它用於什麼目的?
- 2. Promise.Resolve的目的是什麼?
- 3. Function.const的目的是什麼?
- 4. 包的目的是什麼
- 5. sun.jvm.hotspot.HelloWorld的目的是什麼?
- 6. ApplicationBuilder.Properties的目的是什麼?
- 7. NSNotification的目的是什麼
- 8. `Data.Proxy`的目的是什麼?
- 9. String.IsInterned的目的是什麼?
- 10. 宏的目的是什麼?
- 11. Imposteriser的目的是什麼?
- 12. 'R'的目的是什麼?
- 13. IntentSender的目的是什麼?
- 14. 什麼是@的目的PHP
- 15. 什麼是.`ToListAsync的目的()`
- 16. Ember.Deferred的目的是什麼?
- 17. Regex.Escape的目的是什麼?
- 18. SpringContextLoaderListener的目的是什麼
- 19. #line - 的目的是什麼?
- 20. GetPrivateProfileString的目的是什麼?
- 21. onSurfaceChanged的目的是什麼?
- 22. CultureInfo.CurrentCulture的目的是什麼?
- 23. 什麼是Membership.ValidateUser()的目的
- 24. javax.servlet.FilterChain的目的是什麼?
- 25. UIViewController.topLayoutGuide的目的是什麼?
- 26. TabPage.Hide()的目的是什麼
- 27. IEnumerator的目的是什麼
- 28. XNoImplicitPrelude的目的是什麼?
- 29. EasyMock.andVoid()的目的是什麼?
- 30. SetDefaultFieldSortScoring的目的是什麼?
屬性。 http://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx –
閱讀關於面向對象編程和[封裝](http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming)) – Habib
你有沒有試過這個:http://www.google.com/search?q=.net+c%23+get+set? – Olexander