2013-04-01 4 views
-1

Так что я делаю пользовательский контроль для своей программы. Я пошел добавить свойство строки, но когда я попытался изменить его, C# аварий. Это код, который я используюпользовательское свойство контрольной строки C#

private string series = "None"; 
[Description("Tells What the Series is")] 
[Category("Element")] 
[DefaultValue("None")] 
public string Series 
{ 
    get { return series; } 
    set { Series = value; } 
} 
+3

Какая у вас ошибка? –

+1

Проблема заключается в том, что множество {Серии = значение;} должно быть серией = значение с малыми s. – Casperah

+0

Что .. 's' –

ответ

9

Вы рекурсивно устанавливаете его.

private string series = "None"; 
[Description("Tells What the Series is")] 
[Category("Element")] 
[DefaultValue("None")] 
public string Series 
{ 
    get { return series; } 
    set { series = value; } // notice series not Series 
} 

Могу я предложить использовать автоматические свойства?

[Description("Tells What the Series is")] 
[Category("Element")] 
[DefaultValue("None")] 
public string Series 
{ 
    get; set; 
} 

Вам нужно будет инициализировать значение в вашем конструкторе.

+0

Спасибо! Мои глупые ошибки, которые я никогда не смогу получить. –

+1

Если вы не можете использовать автоматические свойства (например, если вам нужно обрабатывать INotifyPropertyChanged), это может помочь хотя бы использовать стандартизованную номенклатуру имен для ваших полей, чтобы сделать ваше намерение более очевидным. Два из более «популярных» - это вставить символ подчеркивания или «m» в начало вашего имени переменной: _series или mSeries или даже m_Series. –

2

Вы пытаетесь установить свойство Series рекурсивно в настройщике объекта. Это приведет к StackOverflowException.

set { series = value; } 

Это то, что вы хотите.

2

Yoy получил бесконечный цикл в вашем приложении, поэтому он сбой с ошибкой stackoverflow, я думаю.

set { Series = value; } 

должен быть

set { series = value; } 
2

вы пытаетесь установить само значение proprty в «набор», тем самым создавая бесконечную рекурсию.

изменение

set { Series = value; } 

к

set { series = value; } 

(в нижнем регистре с).

Смежные вопросы