codestory

Die Anleitung zu C# Property

  1. C# Property
  2. Die Abstract Property

1. C# Property

Property ist ein Mitglieder (member) von einer Klasse und Interface. Es ist eine Ausweiterung einer Umgebung (field). Property genehmigt Ihnen, zu einem Field zuzugreifen oder die Wert des Fields ohne Zugang zu ändern.

Sie können ein Property erstellen, das nur in einem Field zugreifen,und die Wert des Field nicht ändern darf und umgekehrt. Das ist die gefährliche Dinge eines Property.
Mit dem Field: wenn Sie vom außen zugreifen können, können Sie seine Wert ändern. Das ist klar sehr gefährlich. Sehen Sie das Beispiel
Employee.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpPropertyTutorial
{
    class Employee
    {
        // Um vom außen zuzugreifen, 
        // muss der Feld (field) 'public' oder 'protected' sein
        public string code;

        // Um vom außen zuzugreifen, 
        // muss der Feld (field) 'public' oder 'protected' sein
        public string name;

        public Employee(string code, string name)
        {
            this.code = code;
            this.name = name;
        }
    }


    class EmployeeTest
    {

        public static void Main(string[] args)
        {
            // Ein Objekt Employee erstellen.
            Employee john = new Employee("E01", "John");

            // Sie können in den Name des Mitarbeiter zugreifen
            // (name ist der public Feld, deshalb können Sie vom außen zugreifen).
            Console.WriteLine("Employee Name = " + john.name);

            // Allerdings können Sie die neue Wert für den Feld name anweisen
            // (Das ist sehr klar gefährdet).
            john.name = "Marry";

            Console.WriteLine("Employee Name = " + john.name);

            Console.Read();
        }
    }

}
Property ist eine Lösung für die oben gemeinte Frage. Unten ist ein Beispiel über die Benutzung der Property Code, Name um den Field code, name der Klasse Employee2. zuzugreifen
Employee2.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpPropertyTutorial
{
    class Employee2
    {
        // Der Feld ist private,
        // Er erlaubt, vom außen nicht zuzugreifen.
        private string code;

        // Der Feld ist private,
        // Er erlaubt, vom außen nicht zuzugreifen.
        private string name;

        // Ein Property als public erklären, das vom außen zugreifen kann.
        public string Code
        {
            get
            {
                return this.code;
            }
            set
            {
                // 'value' ist ein besoderer Schlüsselwort,
                // Es meint die neue Wert, die für property angewiesen wird.
                this.code = value;
            }
        }

        // Ein property als public erklären, 
        // erlaubt zuzugreifen aber die neue Wert nicht anzuweisen
        public string Name
        {
            get
            {
                return this.name;
            }
        }



        public Employee2(string code, string name)
        {
            this.code = code;
            this.name = name;
        }
    } 

}
Test:
Employee2Test.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpPropertyTutorial
{
    class Employee2Test
    {
        public static void Main(string[] args)
        { 

            // Ein Objekt Employee erstellen.
            Employee2 john = new Employee2("E01", "John");

           
            Console.WriteLine("Employee Code = " + john.Code);
            Console.WriteLine("Employee Name = " + john.Name);
            Console.WriteLine("-------");

            // Die neue Wert für property Code anweisen.
            john.Code = "E02";

            // Die neue Wert für property Name nicht anzuweisen
            // john.Name = "Marry"; // ==> Error!
            Console.WriteLine("Employee Code = " + john.Code);
            Console.WriteLine("Employee Name = " + john.Name);

            Console.Read();
        }
    }

}
Das Beispiel durchführen
Employee Code = E01
Employee Name = John
------
Employee Code = E02
Employee Name = John

2. Die Abstract Property

Property ist benutzt um die Wert eines Field zu setzen (set) und erhalten (get ). Es wird auf die Wesen wie eine besondere Methode. Deshalb kann es abstrakt (abstract) anmelden und es wird bei einer untergeordneten Klasse implementiert (implements). Wenn eine Klasse die Anmeldungseingenschaft (property) abstract hat, muss es abstract anmelden. Die abstracten Eigenschaften können im Interface angemeldet.
Animal ist eine Klasse mit der Anmeldung von 2 abstracten Eigenschaften (Name & Age):
Animal.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpPropertyTutorial
{
    abstract class Animal
    { 
        // Ein abstraktes property (abstract Property).
        public abstract string Name
        {
            get; 
        } 
        // Ein abstraktes property mit set & get.
        public abstract int Age
        {
            get;
            set;
        }
    } 
}
Die Klasse Cat wird aus Animal ausgeweitert und die im Animal angemeldeten abstracten Eigenschaften durchführen
Cat.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpPropertyTutorial
{ 
    class Cat : Animal
    {
        private string name;
        private int age;

        // Die Durchführung eines abstrakten property, 
        // das in der Klasse Animal erklärt wird.
        public override string Name
        {
            get
            {
                return this.name;
            }
        } 
        // Die Durchführung eines abstrakten property, 
        // das in der Klasse Animal erklärt wird.
        public override int Age
        {
            get
            {
                return this.age;
            }
            set
            {
                this.age = value;
            }
        } 
        // Constructor.
        public Cat(string name, int age)
        {
            this.name = name;
            this.age = age;
        }
    } 
}
Property in der Interface
Sie können Property in einer Interface anmelden. Die untergeordneten Property werden in diesen untergeordneten Klasse implementiert.
IColor.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpPropertyTutorial
{
    interface IColor
    { 
        // Ein abstraktes Property der Interface
        String Color
        {
            get;
        }
    } 
}
Die Klasse Ball implementiert die Interface IColor,. Sie implementiert die abstracte Anmeldungseigenschaft im IColor.
Ball.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpPropertyTutorial
{
    class Ball : IColor
    {
        private string color; 
        // Die Durchführung des Property, das in Interface IColor erklärt wird
        // (den Schlüsselwort override hier nicht schreiben dürfen wenn 
        // er ein Property von Interface macht).
        public string Color
        {
            get
            {
                return this.color;
            }
        } 
        // Constructor.
        public Ball(String color)
        {
            this.color = color;
        }
    } 
}