2011-05-31 82 views
2

我的代碼部分崩潰是Visual Studio 2010中,當構建發生

public int MyProperty { set { DoTask(); } } 

private void DoTask() 
{ 
    int MyValue = MyProperty; 
} 

我沒有Get訪問爲MyProperty。 我試圖在DoTask()中獲得它的值。 當我在VS2010中構建這個應用程序時,它會崩潰,發出構建錯誤。這不是一個錯誤?糾正我,如果我錯了或誤解。

問候 Umesh製作ç

回答

0

代碼的previos值應明確不會導致無限循環,作爲對消氣myProperty的不存在(讀:即使是私有的)。編譯器應該檢測到這一點。

儘管如此,更好的設計是爲公共設置屬性提供一個公共getter。 你的代碼將做的事實上是調用一個方法,那麼爲什麼你甚至需要這個屬性?只需公開您的DoTask()方法並讓客戶直接調用它。請記住,使用你的代碼,你絕對沒有機會獲得MyProperty的價值,甚至不能從你的課堂中獲得價值。

+0

我明白了我的做法是不正確的。我想知道的是爲什麼它崩潰,並沒有顯示構建錯誤,說get accessor沒有定義 – 2011-05-31 09:14:49

3

我發現代碼問題你寫

public int MyProperty { set { DoTask(value); } } 

private void DoTask(int value) 
{ 
    int MyValue = value; 
} 

public int MyProperty { set { int MyValue = value; } } 

你的代碼犯規做出任何意義..

+0

我想在任何人爲Myproperty分配任何值時調用Dotask。所以我這樣做了。但是當我試圖得到它應該給建立錯誤,而不是崩潰VS. – 2011-05-31 08:02:34

0

其清除它導致我的財產無限循環 電話dotask和dotask調用myporpety 和崩潰的編譯器 是Pranay提供好主意嘗試使用

所以你應該的方式定義屬性 將其更改爲

private int m_MyProperty; 
public int MyProperty { get {return m_MyProperty}set { DoTask(); m_MyProperty=value} } 

私人無效DoTask解決方案() { int MyValue = m_MyProperty; }

DoTask始終讀myProperty的

+0

如果我在DoTask()中再次賦值,它將導致無限循環。我試圖閱讀它,沒有分配一個值,所以無限循環不會來到這裏。 我的疑問是爲什麼它崩潰,並沒有顯示構建錯誤,說沒有定義訪問器 – 2011-05-31 08:04:45

+0

@Chilaka Umesh,你看起來是正確的,這不應該使編譯器崩潰。看到我對你的解決方案建議的回答。 – eFloh 2011-05-31 09:01:24

+0

你是正確的,當我在2010Ÿ編譯編碼我得到這個錯誤錯誤 屬性或索引 「WindowsFormsApplication23.Form1.MyProperty」 不能在此上下文中,因爲它缺乏 get訪問 – DeveloperX 2011-05-31 09:49:13

相關問題