Inhaltsverzeichnis

Die Anleitung zu C# 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
    {
        // To be accessible externally, 
        // this field must be 'public' or 'protected'.
        public string code;

        // To be accessible externally, 
        // this field must be 'public' or 'protected'.
        public string name;

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


    class EmployeeTest
    {

        public static void Main(string[] args)
        {
            // Create an Employee object.
            Employee john = new Employee("E01", "John");

            // You can access the employee's name.
            // (name is a public field so you can access it outside).
            Console.WriteLine("Employee Name = " + john.name);

            // But you can also assign a new value to the name field.
            // (This is obviously dangerous).
            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
    {
        // This field is private,
        // It does not allow external access.
        private string code;

        // This field is private,
        // It does not allow external access.
        private string name;

        // Declare a property, which is public, accessible from outside.
        public string Code
        {
            get
            {
                return this.code;
            }
            set
            {
                // 'value' is a special keyword,
                // It implies the new value assigned to the property.......
                this.code = value;
            }
        }

        // Declare a property, public, allows access,
        // but not allowed to assign new values.
        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)
        { 

            // Create an Employee object.
            Employee2 john = new Employee2("E01", "John");

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

            // Assign value to Code property.
            john.Code = "E02";

            // Can not assign new value to Name property.
            // john.Name = "Marry"; // ==> Error!
            Console.WriteLine("Employee Code = " + john.Code);
            Console.WriteLine("Employee Name = " + john.Name);

            Console.Read();
        }
    }

}
Das Beispiel durchführen

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
    {

        // An abstract property.
        public abstract string Name
        {
            get; 
        }

        // An abstract property has 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;

        // Implement the abstract property declared in the Animal class.
        public override string Name
        {
            get
            {
                return this.name;
            }
        }

        // Implement the abstract property declared in the Animal class.
        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
    {

        // An Abstract property of 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;

        // Implements the declared property in Interacle IColor
        // (Do not write the keyword 'override' here,
        // because it implements an interface property).
        public string Color
        {
            get
            {
                return this.color;
            }
        }

        // Constructor.
        public Ball(String color)
        {
            this.color = color;
        }
    }

}

View more categories: