Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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; } }

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.8k views
Welcome To Ask or Share your Answers For Others

1 Answer

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...