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。
我完全是编程初学者,可能很困惑。
s
是 Student
类型(在 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?
我试图更好地理解属性,我通过这个例子看到了这个页面:
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。 我完全是编程初学者,可能很困惑。
s
是 Student
类型(在 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?