C# set属性用法
时间: 2024-10-25 22:13:57 浏览: 23
在C#中,`set`关键字用于定义访问器(Accessor),它是属性(Property)的一部分,允许我们在给属性赋值时添加一些额外的行为。当你声明一个包含`set`的属性时,通常会有一个对应的私有字段(BackingField)来存储实际的数据。
例如,考虑一个简单的表示学生姓名的属性:
```csharp
public string Name
{
get { return _name; }
set
{
if (string.IsNullOrEmpty(value))
throw new ArgumentException("Name cannot be empty.");
_name = value;
}
}
```
在这里,`get`部分用于获取姓名,而`set`部分则接受新的名字值,并进行了验证(如果为空则抛出异常)。在外部代码中,你可以像这样设置和获取这个属性:
```csharp
student.Name = "John Doe"; // 设置姓名
string name = student.Name; // 获取姓名
```
相关问题
C# get set 的用法
在C#中,`get` 和 `set` 关键字用于创建访问器,也就是属性访问的getter和setter部分。它们主要用于封装数据,使得数据对外部世界不可直接修改,而是通过特定的方式控制其变化。
当你在类中声明一个属性(如`public int MyProperty { get; set; }`),实际上是创建了一个可以读取(get)和设置(set)的成员变量`MyProperty`。以下是这个语法的详细解释:
- `get`:紧跟在属性名称后面的是getter方法,它是在尝试获取属性值时自动调用的。例如,`return myVariable;` 这里的`myVariable`就是底层存储的数据。用户无需关心如何实际获取值,只需通过`MyProperty`来读取。
- `set`:在花括号内定义setter方法,当外部代码尝试改变属性值时会调用。通常在这个方法内部会对新值进行一些验证、处理或更新操作,然后将值存储到对应的成员变量。例如:
```csharp
private int _myVariable;
public int MyProperty {
get => _myVariable;
set {
if (value >= 0) {
_myVariable = value;
} else {
throw new ArgumentException("Value must be non-negative.");
}
}
}
```
C#set方法用lamda表达式
在C#中,我们可以使用Lambda表达式来定义属性的set方法。Lambda表达式是一种简洁的语法形式,用于定义匿名函数。
下面是一个示例,展示了如何使用Lambda表达式定义一个属性的set方法:
```csharp
private string _name;
public string Name
{
get => _name;
set => _name = value ?? throw new ArgumentNullException(nameof(value));
}
```
在上面的示例中,我们定义了一个私有字段 `_name` 和一个公共属性 `Name`。属性的set方法使用了Lambda表达式来定义。在这个Lambda表达式中,我们将传入的值 `value` 赋给私有字段 `_name`。此外,还使用了空合并运算符 `??` 和 `throw` 语句来验证传入的值是否为null。
请注意,Lambda表达式可以用于更复杂的逻辑,这只是一个简单的示例。你可以根据自己的需求编写更复杂的Lambda表达式来定义属性的set方法。
阅读全文