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; } }
Because you're returning the same thing recursively.
In this case instead of generating a new variable like the rest of the answers are saying. You can simply just write.
This will allow anyone to retrieve this variable which you could re write as
If you want the setting to be private you can say.
I like it this way better because this way you don't have to allocate a new variable and the readability of the code greatly increases :)
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:
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:
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
andget
with your property.In your current code, you are trying to set your property recursively, and thus resulting in stackoverflow exception