Files
My-Notes/笔记/CSharp/核心/成员属性.md
T
2026-04-13 15:40:15 +08:00

85 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
概念:
==和成员变量不完全是一个概念!!!!==
1. 用于保护成员变量
2. 为成员属性的获取和复制添加逻辑处理
3. 解决3P局限性
自动属性
通常用法:
配合private加密或规范成员属性的修改获取等
让其==只能获取不能修改== 或 ==只能修改不能获取==
语法:
属性声明:
```Csharp
访问修饰符 属性类型 属性名
{
get{}
set{}
}
```
案例:
```Csharp
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
```Csharp
public int Money()
{
get
{
return money;
}
set
{
if(value<0) value = 0;
cw(没钱);
money = value;
}
}
```
↑最简单的防止money为负数的逻辑
注意:
成员属性不加访问修饰符,会使用成员变量声明时的访问权限
==get和set也可以加访问修饰符,但是不能大于成员属性前访问修饰符的权限==
可以只有一个set或只有一个get(只能得或只能改),但是通常没人这么干
自动属性
相当于声明了一个成员变量,但是好处是可以添加访问修饰符
案例:可以得,但是不能改得一个成员↓
```Csharp
public float Height
{
get;
private set;
}
```