Visual Studio 2010中,当构建发生

问题描述:

我的代码部分崩溃是Visual Studio 2010中,当构建发生

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

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

我没有Get访问为MyProperty。 我试图在DoTask()中获得它的值。 当我在VS2010中构建这个应用程序时,它会崩溃,发出构建错误。这不是一个错误?纠正我,如果我错了或误解。

问候 Umesh制作ç

代码的previos值应明确不会导致无限循环,作为对消气myProperty的不存在(读:即使是私有的)。编译器应该检测到这一点。

尽管如此,更好的设计是为公共设置属性提供一个公共getter。 你的代码将做的事实上是调用一个方法,那么为什么你甚至需要这个属性?只需公开您的DoTask()方法并让客户直接调用它。请记住,使用你的代码,你绝对没有机会获得MyProperty的价值,甚至不能从你的课堂中获得价值。

+0

我明白了我的做法是不正确的。我想知道的是为什么它崩溃,并没有显示构建错误,说get accessor没有定义 – 2011-05-31 09:14:49

我发现代码问题你写

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

其清除它导致我的财产无限循环 电话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