N227 Fuld egenskab (fejl)
Du skal skabe en tom konsol app, og erstat koden med følgende:
namespace Indkapsling
{
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Navn = "x";
Console.WriteLine(p.Navn);
}
}
class Person
{
private string navn;
public string Navn
{
get { return navn; }
set { Navn = value; }
}
}
}
Prøv at bygge projektet - der burde ikke være nogle fejl. Prøv at afvikle - der burde så til gengæld komme en (overflow) exception. Din opgave er at finde ud af hvorfor og rette koden så den virker.
Klik for at se et forslag til en løsning
namespace Indkapsling
{
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Navn = "x";
System.Console.WriteLine(p.Navn);
}
}
class Person
{
private string navn;
public string Navn
{
get { return navn; }
set {
// value skal tildeles feltet og ikke set-delen af egenskaben (skaber
// et rekursivt kald)
navn = value; // ikke Navn = value;
}
}
}
}