Files
My-Notes/笔记/CSharp/核心/成员属性.md
T
2026-06-18 20:01:30 +08:00

1.9 KiB
Raw Blame History

概念: ==和成员变量不完全是一个概念!!!!==

  1. 用于保护成员变量
  2. 为成员属性的获取和复制添加逻辑处理
  3. 解决3P局限性 自动属性

通常用法: 配合private加密或规范成员属性的修改获取等 让其==只能获取不能修改== 或 ==只能修改不能获取==

语法: 属性声明:

	访问修饰符 属性类型 属性名
	{
		get{}
		set{}
	}

案例:

class Person()
{
	private int age;
	private string name;
	private int money;
	private bool sex;
	public string Name  [[命名法|帕斯卡命名法]] 
	{
		get==必须有返回值==
		{
			//这里写处理获取内容的逻辑
			return name;
		}
		set
		{
			//这里写处理修改/添加内容的逻辑,不写就没有
			==//关键字value 用于表示外部传入的值 只在set中有==
			name = value;
		}
	}
}

Person p = new Person();
~~p.name = xxx~~ 因为private所以没法用.name
p.Name = xxx

↑写了一个public的属性大家都可以访问,用该属性Name进行修改 return直接返回原始的nameset时使用.Name将xxx作为传入参数放到set的value关键字中

案例2

	public int Money()
	{
		get
		{
			return money;
		}
		set
		{
			if(value<0) value = 0;
			cw(没钱);
			money = value;
		}
	}

↑最简单的防止money为负数的逻辑

注意: ==get必须有返回值== 成员属性不加访问修饰符,会使用成员变量声明时的访问权限 ==get和set也可以加访问修饰符,但是不能大于成员属性前访问修饰符的权限== 可以只有一个set或只有一个get(只能得或只能改),但是通常没人这么干

自动属性 相当于声明了一个成员变量,但是好处是可以添加访问修饰符 案例:可以得,但是不能改得一个成员↓

public float Height
{
	get;
	private set;
}

#封装 #核心