上一节:
下一节:

  C# 属性 Properties

  • 属性 Properties

    Properties被命名为类,结构和接口的成员。类或结构中的成员变量或方法称为字段。属性是字段的扩展,可以使用相同的语法进行访问。它们使用访问器,通过它们可以读取,写入或操纵私有字段的值。属性未命名存储位置。相反,他们有存取读取,写入,或计算它们的值。例如,让我们有一个名为Student的类,其中包含年龄,姓名和代码的专用字段。我们不能从类范围之外直接访问这些字段,但是我们可以具有用于访问这些私有字段的属性。
  • 存取器

    访问属性包含可执行语句,有助于获取(读取或计算)或设置(写入)属性。访问者声明可以包含获取访问者,设置访问者或两者。例如-
    
    // Declare a Code property of type string:
    public string Code {
       get {
          return code;
       }
       set {
          code = value;
       }
    }
    
    // Declare a Name property of type string:
    public string Name {
       get {
          return name;
       }
       set {
          name = value;
       }
    }
    
    // Declare a Age property of type int:
    public int Age { 
       get {
          return age;
       }
       set {
          age = value;
       }
    }
    
    以下示例演示了属性的使用-
    
    using System;
    namespace tutorialspoint {
       class Student {
          private string code = "N.A";
          private string name = "not known";
          private int age = 0;
          
          // Declare a Code property of type string:
          public string Code {
             get {
                return code;
             }
             set {
                code = value;
             }
          }
          
          // Declare a Name property of type string:
          public string Name {
             get {
                return name;
             }
             set {
                name = value;
             }
          }
          
          // Declare a Age property of type int:
          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() {
          
             // Create a new Student object:
             Student s = new Student();
             
             // Setting code, name and the age of the student
             s.Code = "001";
             s.Name = "Zara";
             s.Age = 9;
             Console.WriteLine("Student Info: {0}", s);
             
             //let us increase age
             s.Age += 1;
             Console.WriteLine("Student Info: {0}", s);
             Console.ReadKey();
          }
       }
    }
    
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Student Info: Code = 001, Name = Zara, Age = 9
    Student Info: Code = 001, Name = Zara, Age = 10
    
  • 抽象属性

    抽象类可能具有抽象属性,应在派生类中实现。以下程序说明了这一点-
    
    using System;
    
    namespace tutorialspoint {
       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;
          
          // Declare a Code property of type string:
          public string Code {
             get {
                return code;
             }
             set {
                code = value;
             }
          }
          
          // Declare a Name property of type string:
          public override string Name {
             get {
                return name;
             }
             set {
                name = value;
             }
          }
          
          // Declare a Age property of type int:
          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() {
             // Create a new Student object:
             Student s = new Student();
             
             // Setting code, name and the age of the student
             s.Code = "001";
             s.Name = "Zara";
             s.Age = 9;
             Console.WriteLine("Student Info:- {0}", s);
             
             //let us increase age
             s.Age += 1;
             Console.WriteLine("Student Info:- {0}", s);
             Console.ReadKey();
          }
       }
    }
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    Student Info: Code = 001, Name = Zara, Age = 9
    Student Info: Code = 001, Name = Zara, Age = 10
    
上一节:
下一节: