C# 属性和 "tostring" 方法

C# properties and "tostring" method

我试图更好地理解属性,我通过这个例子看到了这个页面:

https://www.tutorialspoint.com/csharp/csharp_properties.htm

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();
  }
}
}

输出:学生信息:代码 = 001,姓名 = Zara,年龄 = 9

我不明白第一个例子是如何输出 class "student" 中写的整行的。在主要方法中,我们使用“s”,它是在 class“exampledemo”中创建的对象。它如何能够从另一个 class 调用方法? 我想这与继承和多态性有关(我用 google 搜索了 override 关键字),但在我看来,这两个 class 是独立的,而不是另一个的子 class。 我完全是编程初学者,可能很困惑。

sStudent 类型(在 Main() 的第一行声明)。因此,可以调用对象上的方法来修改它或打印它。当您执行 s.Name = "Zara"; 时,您已经在 Student 上调用方法来更新它(从技术上讲,方法和 属性 是相同的,它们只是语法不同)。

Console.WriteLine("Student Info: {0}", s);实际上与Console.WriteLine("Student Info: " + s.ToString());相同。编译器允许以更短的形式编写,但在内部会发生同样的事情。

让我举一个真实的例子。

你有一张你梦想中的自行车的草图。你的自行车只存在于草图中。这是一个class.

然后你要去车库,根据草图制作你的自行车。可以像创建 object 一样调用此过程 从你的草图看工厂里的自行车。

根据您的示例,class 是 Student

您正在通过以下行创建一个对象:

Student s = new Student(); 

对象占用 space 内存。我们如何从内存中读取对象的值?通过使用对象引用。 s 是对新创建的对象类型 Student 的对象引用。

How is it able to call a method from another class?

s是对新创建的对象类型Student的对象引用。所以它可以调用这个对象的任何public方法。

I was trying to understand properties

属性是 getter 和 setter 方法的演变。 Looking for a short & simple example of getters/setters in C#

编译器为 属性 生成一对 get 和 set 方法 ,加上一个 auto-implemented 属性 的私有支持字段. Are C# properties actually Methods?