C#属性Property用法详解与语法入门
时间:2026-08-15 | 作者:夜鞌不睡 | 阅读:0属性(Property)属于类(class)、结构体(structure)和接口(interface)的成员。类或结构体里定义的成员变量通常叫字段,而属性可以理解为字段的一层对外扩展:借助访问器(accessors),既能读取私有字段的值,也能对它们进行写入。
属性本身并没有明确的内存存储位置,它依赖的是可读、可写,或者可参与计算的访问器。比如有一个名为 Student 的类,里面包含 age、name 和 code 这 3 个私有字段。类的外部不能直接碰这些字段,但完全可以通过对应的属性来访问它们。
访问器
属性访问器主要有两种: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;
}
}
【示例】下面通过一个具体示例来看属性是怎么使用的。
using System;
namespace c.biancheng.net
{
class Demo
{
static void Main(string[] args)
{
// 创建一个新的 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();
}
}
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 +", 姓名 = " + Name + ", 年龄 = " + Age;
}
}
}
运行结果如下:
学生信息: 编号 = 001, 姓名 = Zara, 年龄 = 9
学生信息: 编号 = 001, 姓名 = Zara, 年龄 = 10
抽象属性
抽象类中可以拥有抽象属性,这些属性会在派生类中实现,下面就通过一个示例来演示一下:
using System;
namespace c.biancheng.net
{
class Demo
{
static void Main(string[] args)
{
// 创建一个新的 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();
}
}
public abstract class Person
{
public abstract string Name
{
get;
set;
}
public abstract int Age
{
get;
set;
}
}
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 +", 姓名 = " + Name + ", 年龄 = " + Age;
}
}
}
运行结果如下:
学生信息: 编号 = 001, 姓名 = Zara, 年龄 = 9
学生信息: 编号 = 001, 姓名 = Zara, 年龄 = 10
相关文章
- C#类属性用法汇总
- C#获取字符串长度(Length属性)
- C#获取指定位置的字符(Chars属性)
- C#中的字段和属性(附带实例)
- C# get和set访问器:获取和设置字段(属性)的值
- C语言的优点和缺点
- C89(C90)、C99、C11——C语言的三套标准
- C++构造函数(从本质上理解)
- C++对象数组中使用构造函数
- C++拷贝构造函数(复制构造函数)详解
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- 打破多年惯例!小米18缺席9月发布会 卢伟冰:不会让大家等太久
- 时间:2026-08-25
-
- C# 里字段(Field)和属性(Property)到底怎么区分?一篇讲清职责、写法与选型
- 时间:2026-08-24
-
- 突破500万分、十核全大核设计!小米晒玄戒O3性能:领先苹果A19 Pro
- 时间:2026-08-24
-
- 红米Note12 Pro扩容内存必须获取root权限吗
- 时间:2026-08-24
-
- 华硕天选7 Pro与Max游戏本发布 售价10399元起
- 时间:2026-08-23
-
- 红米K20 Pro微信悬浮窗开启方法与使用教程
- 时间:2026-08-23
-
- 红米Note12 Pro与Note12续航对比实测
- 时间:2026-08-23
-
- 红米Note12T Pro电池容量与详细配置参数介绍
- 时间:2026-08-23
精选合集
更多大家都在玩
大家都在看
更多-
- 为什么湿头发更容易断裂 蚂蚁庄园今日答案9.15
- 时间:2026-09-14
-
- 蚂蚁庄园今天答题答案2026年9月15日
- 时间:2026-09-14
-
- 蚂蚁庄园答题今日答案2026年9月15日
- 时间:2026-09-14
-
- 蚂蚁庄园小课堂2026年9月15日最新题目答案
- 时间:2026-09-14
-
- 小鸡答题今天的答案是什么2026年9月15日
- 时间:2026-09-14
-
- 蚂蚁庄园每日答题答案2026年9月15日
- 时间:2026-09-14
-
- 糖尿病患者禁食所有含糖食物吗 蚂蚁庄园今日答案9月15日
- 时间:2026-09-14
-
- 2026年9月14日蚂蚁新村答案
- 时间:2026-09-14
