Property Basics
-
Moin moin,
ich habe eine Azubine für Fachinformatik und diese hat ein paar Fragen bezüglich C# Properties. Da ich nicht hundertprozentig fit bin, frage ich ich deswegen nach. Die Fragen habe ich in dem Code geschrieben.
using System; using System.Collections.Generic; namespace ConsoleApp1 { class Foo { static int Counter = 0; ///< Statische int Variable zum Debuggen /** * Konstruktor **/ public Foo() { mVar = 42; } // Property welche nur innerhalb der Klasse gesetzt und öffentlich gelesen // werden kann public int mVar { get; private set; } // Private String Variable plus erweitertes Property private string _Name; public string mName // Legt man hiermit eine String Variable an? { get { return _Name; } set { _Name = value; Console.WriteLine("Hallo Welt\n"); } } // Warum geht folgende Sache nicht? //private string _Name2; //public string mName2 //{ // get; // set // { // _Name2 = value; // } //} public string _Name3; public string mName3 { get { Console.WriteLine(string.Format("{0}", Counter++)); return mName3; // Wird hiermit rekursiv die get Property aufgerufen? } set { _Name3 = value; Console.WriteLine("Hallo Welt\n"); } } } class Program { static void Main(string[] args) { Foo f = new Foo(); Console.WriteLine(string.Format("{0}", f.mVar)); f.mName = "Hallo"; //f.mName2 = "Welt"; Console.WriteLine(string.Format("{0}", f.mName3)); Console.WriteLine("Hit any key"); } } }
-
Weil dem Compiler in dem Fall nicht bekannt ist was er bei der "get;" zurückgeben soll. Nur wenn du get&set ohne Body hast erstellt er dir automatiusch ein compiler-defined backing field.
MfG SideWinder
-
@SideWinder
Danke für die Info. Wir haben Properties nun verstanden.