People of stackoverflow. I am new to c# and this is the first time I have not been able to find an answer to one of my elementary questions. Who can help me?!I am trying to define set logic for a public instance field.
This runs flawlessly,
public string Headline {get; set;}
This results in stack overflow
public string Headline
{ get { return Headline; } set { Headline = value; } }
You're calling the getter and setter recursively (calling themselves infinitely), inevitably causing a stack overflow.
Surely this is what you mean to be doing:
private string headline;
public string Headline
{
get { return headline; }
set { headline = value; }
}
Note that this is unnecessary if you don't plan to introduce any further get/set logic, as this is exactly what your first example does behind the scenes.
When learning about properties in c#, it helps to think of them not as data, but as a pair of methods with the following signatures:
public string get_Headline() { ... }
public void set_Headline(string value) { ... }
In fact, this is exactly how the compiler defines them.
Now it's easy to see that your initial code would call set_Headline
recursively.
You need a backing field if you are trying to use set
and get
with your property.
private string _headline; //backing field.
public string Headline
{
get { return _headline; }
set { _headline = value; }
}
In your current code, you are trying to set your property recursively, and thus resulting in stackoverflow exception
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With