下一页 1 2
本教程展示属性是如何成为 C# 编程语言必不可少的一个组成部分的。它阐释如何声明和使用属性。 此教程包括两个示例。第一个示例展示如何声明和使用读/写属性。第二个示例演示抽象属性并展示如何在子类中重写这些属性。 本示例展示一个 Person 类,它有两个属性:Name (string) 和 Age (int)。两个属性都是读/写属性。 属性的“设置”(Set) 方法和“获取”(Get) 方法包含在属性声明中。可以通过控制是否包含“获取”方法或“设置”方法来控制属性是读/写属性、只读属性还是只写属性。 如果使用单独的“设置”方法和“获取”方法建立属性模型,等效代码可能是: 注意程序中未显式使用 ToString。默认情况下,它由 WriteLine 调用来调用。 下面的示例展示如何定义抽象属性。抽象属性声明不提供属性访问器的实现。本示例演示如何在子类中重写这些属性。 该示例包含三个文件。在“属性”示例中,这些文件被编译为单个编译;但在此教程中,每个文件都单独进行编译,且产生的程序集会由下一个编译引用:
若要编译该示例,请使用命令行: 这样将生成可执行文件 shapetest.exe。
教程示例 1
// person.cs
using System;
class Person
{
private string myName ="N/A";
private int myAge = 0;
// Declare a Name property of type string:
public string Name
{
get
{
return myName;
}
set
{
myName = value;
}
}
// Declare an Age property of type int:
public int Age
{
get
{
return myAge;
}
set
{
myAge = value;
}
}
public override string ToString()
{
return "Name = " + Name + ", Age = " + Age;
}
public static void Main()
{
Console.WriteLine("Simple Properties");
// Create a new Person object:
Person person = new Person();
// Print out the name and the age associated with the person:
Console.WriteLine("Person details - {0}", person);
// Set some values on the person object:
person.Name = "Joe";
person.Age = 99;
Console.WriteLine("Person details - {0}", person);
// Increment the Age property:
person.Age += 1;
Console.WriteLine("Person details - {0}", person);
}
}
输出
Simple Properties
Person details - Name = N/A, Age = 0
Person details - Name = Joe, Age = 99
Person details - Name = Joe, Age = 100
代码讨论
Name
属性: public string Name
{
get
{
return myName;
}
set
{
myName = value;
}
}
person.Name = "Joe";
person.Age = 99;
value
变量。该变量包含用户指定的值,例如: myName = value;
Person
对象上的 Age
属性递增的简洁语法: person.Age += 1;
person.SetAge(person.GetAge() + 1);
public override string ToString()
{
return "Name = " + Name + ", Age = " + Age;
}
示例 2
abstractshape.cs
:包含抽象 Area 属性的 Shape 类。
shapes.cs
:Shape 类的子类。
shapetest.cs
:一个测试程序,它显示某些 Shape 派生的对象的面积。 csc abstractshape.cs shapes.cs shapetest.cs