English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي C#

دليل متقدم C#

C# موجه بالأjectives (OOP)

الصفات في C#

خصائص (Property) هي أعضاء معينة (named) للفئات (class)، الهياكل (structure) والواجهات (interface). يُدعى متغيرات الأعضاء أو الأساليب في الفئة أو الهيكل مجال (Field).خصائص (Property) هي توسيع لمجالات (Field) وتستخدم نفس النحو للوصول إليها. تستخدم وصول (accessors) جعل قيمة المجال الخاص القابلة للقراءة والكتابة أو التشغيل.

خصائص (Property) لا تحدد الموقع التخزيني. بدلاً من ذلك، لديها إمكانية القراءة والكتابة أو حساب القيمة الخاصة بها وصول (accessors).

على سبيل المثال، هناك فئة تُدعى Student تحتوي على مجالات خاصة age، name و code. لا يمكننا الوصول إلى هذه المجالات مباشرة خارج نطاق الفئة، ولكن يمكننا امتلاك خاصيات للوصول إلى هذه المجالات الخاصة.

وصول (Accessors)

خاصية (Property) منوصول (accessor)تتضمن أوامر قابلة للتنفيذ تساعد في الحصول (القراءة أو الحساب) أو تعيين (الإدخال) الخاصيات. يمكن أن تحتوي إعلانات الوصول (accessor) على وصول get واحد، أو وصول set واحد، أو كليهما معًا. على سبيل المثال:

// 	声明类型为 	string 	的 	Code 	属性
public string Code
{
   get
   {
      return code;
   }
   set
   {
      code = value;
   }
}
// 	声明类型为 	string 	的 	Name 	属性
public string Name
{
   get
   {
     return name;
   }
   set
   {
     name = value;
   }
}
// 	声明类型为 	int 	的 	Age 	属性
public int Age
{ 
   get
   {
      return age;
   }
   set
   {
      age = value;
   }
}

مثال على الإنترنت

يوضح هذا المثال استخدام الخصائص (Properties):

using System;
namespace w3codebox
{
   class Student
   {
      private string code = "N.A";
      private string name = "not known";
      private int age = 0;
      // 	声明类型为 	string 	的 	Code 	属性
      public string Code
      {
         get
         {
            return code;
         }
         set
         {
            code = value;
         }
      }
   
      // 	声明类型为 	string 	的 	Name 	属性
      public string Name
      {
         get
         {
            return name;
         }
         set
         {
            name = value;
         }
      }
      // 	声明类型为 	int 	的 	Age 	属性
      public int Age
      {
         get
         {
            return age;
         }
         set
         {
            age = value;
         }
      }
      public override string ToString()
      {
         return "Code = " + Code +", 	Name 	= 	" + Name + ", 	Age 	= 	" + Age;
      }
    }
    class ExampleDemo
    {
      public static void Main()
      {
         // 	创建一个新的 	Student 	对象
         Student s = new Student();
            
         // 	设置 	student 	的 	code、name 	和 	age
         s.Code = "001";
         s.Name = "Zara";
         s.Age = 9;
         Console.WriteLine("Student Info: "{0}", s);
         // زيادة العمر
         s.Age += 1;
         Console.WriteLine("Student Info: "{0}", s);
         Console.ReadKey();
       }
   }
}

عندما يتم ترجمة وكتابة وتنفيذ الكود أعلاه، سيظهر النتيجة التالية:

معلومات الطالب: الرمز = 001، الاسم = Zara، العمر = 9
معلومات الطالب: الرمز = 001، الاسم = Zara، العمر = 10

الخصائص التجريبية (Abstract Properties)

يمكن للفئات التجريبية أن تمتلك خصائص تجريبية، ويجب تنفيذ هذه الخصائص في الفئات المشتقة. يوضح البرنامج أدناه هذا النقطة:

using System;
namespace w3codebox
{
   public abstract class Person
   {
      public abstract string Name
      {
         get;
         set;
      }
      public abstract int Age
      {
         get;
         set;
      }
   }
   class Student : Person
   {
      private string code = "N.A";
      private string name = "N.A";
      private int age = 0;
      // 	声明类型为 	string 	的 	Code 	属性
      public string Code
      {
         get
         {
            return code;
         }
         set
         {
            code = value;
         }
      }
   
      // 	声明类型为 	string 	的 	Name 	属性
      public override string Name
      {
         get
         {
            return name;
         }
         set
         {
            name = value;
         }
      }
      // 	声明类型为 	int 	的 	Age 	属性
      public override int Age
      {
         get
         {
            return age;
         }
         set
         {
            age = value;
         }
      }
      public override string ToString()
      {
         return "Code = " + Code +", 	Name 	= 	" + Name + ", 	Age 	= 	" + Age;
      }
   }
   class ExampleDemo
   {
      public static void Main()
      {
         // 	创建一个新的 	Student 	对象
         Student s = new Student();
            
         // 	设置 	student 	的 	code、name 	和 	age
         s.Code = "001";
         s.Name = "Zara";
         s.Age = 9;
         Console.WriteLine("معلومات الطالب: - {0}", s);
         // زيادة العمر
         s.Age += 1;
         Console.WriteLine("معلومات الطالب: - {0}", s);
         Console.ReadKey();
       }
   }
}

عندما يتم ترجمة وكتابة وتنفيذ الكود أعلاه، سيظهر النتيجة التالية:

معلومات الطالب: الرمز = 001، الاسم = Zara، العمر = 9
معلومات الطالب: الرمز = 001، الاسم = Zara، العمر = 10