c# get和set的用法(附带实例)
C# 程序语言提供了属性(property)成员的概念,所谓的属性就是一个机制,可以读取并写入类私有字段的值。在这个机制下,可以使用 set 设定 private 字段变量,使用 get 取得字段变量,
set 和 get 的语法格式如下:
还可以将表达式主体方法应用到属性中,重新设计第 1 个实例,读者需留意第 10~11行:
程序中可以看到 get 和 set,我们可以使用自动实操属性的概念来省略字段变量的声明,以及 get 和 set 内容。例如:
程序设计时也可以用表达式主体自动为属性设定初始值,可以参考下列实例。
其实从 C# 3.0 开始就有提供对象初始化(Object initializer syntax)的概念了,这个概念可以用于在实体化类对象时同时设定属性的初始值。
例如:
在使用 set 创建属性时,也可以增加 if 条件设定,详情可以参考下列实例。
例如,创建 Job 类,这个程序会要求 Name 属性内容必须大于 3 个字母,如果不符合规定,则定义 Name 是“NA”。
set 和 get 的语法格式如下:
public 数据类型 属性名称
{
get { return 数据字段; }
set { 数据字段 = value; }
}
例如:属性名称第一个英文字母建议大写。
Bank A = new Bank();
A.Balance = 1000;
Console.WriteLine(A.Balance);
public class Bank
{
private int _balance; // 默认的也是 private,所以也可以省略 private
public int Balance // 定义 Balance 属性
{
get { return _balance; }
set { _balance = value; }
}
}
执行结果为:
1000
上述第 2 行有 A.Balance=1000; 因为有等号会触发 Balance 属性的 set() 方法。第 3 行的 A.Balance,没有等号会触发 Balance 属性的 get() 方法。还可以将表达式主体方法应用到属性中,重新设计第 1 个实例,读者需留意第 10~11行:
Bank A = new Bank();
A.Balance = 1000;
Console.WriteLine(A.Balance);
public class Bank
{
private int _balance; // 预设也是 private,所以也可以省略 private
public int Balance // 定义 Balance 属性 (property)
{
get => _balance;
set => _balance = value;
}
}
执行结果和第 1 个实例相同。程序中可以看到 get 和 set,我们可以使用自动实操属性的概念来省略字段变量的声明,以及 get 和 set 内容。例如:
Bank A = new Bank();
A.Balance = 1000;
Console.WriteLine(A.Balance);
public class Bank
{
public int Balance // 定义 Balance 属性 (property)
{ get; set; }
}
执行结果和前面实例相同。上述类没有成员字段,程序编译时会由编译程序自动产生私有成员字段。程序设计时也可以用表达式主体自动为属性设定初始值,可以参考下列实例。
Student A = new Student();
A.PrintInfo();
A.Score = 80;
A.Name = "Jiin-Kwei";
A.PrintInfo();
public class Student
{
public int Score { get; set; } = 60;
public string Name { get; set; } = "Hung";
public void PrintInfo() => Console.WriteLine($"{Name} : {Score}");
}
执行结果为:
Hung : 60
Jiin-Kwei : 80
其实从 C# 3.0 开始就有提供对象初始化(Object initializer syntax)的概念了,这个概念可以用于在实体化类对象时同时设定属性的初始值。
例如:
Student A = new Student()
{
Score = 60,
Name = "Jiin-Kwei"
};
A.PrintInfo();
public class Student
{
public int Score { get; set; }
public string Name { get; set; }
public void PrintInfo() => Console.WriteLine($"{Name} : {Score}");
}
执行结果为:
Jiin-Kwei : 60
在使用 set 创建属性时,也可以增加 if 条件设定,详情可以参考下列实例。
例如,创建 Job 类,这个程序会要求 Name 属性内容必须大于 3 个字母,如果不符合规定,则定义 Name 是“NA”。
Job A = new Job();
A.Name = "JK Hung";
A.Occupation = "老师";
A.PrintInfo();
Job B = new Job();
B.Name = "JK";
B.Occupation = "教授";
B.PrintInfo();
class Job
{
private string _name;
private string _occupation;
public string Name
{
get { return _name; }
set
{
//Console.WriteLine(value);
if (value.Length > 3)
_name = value;
else
_name = "NA";
}
}
public string Occupation
{
get { return _occupation; }
set { _occupation = value; }
}
public void PrintInfo()
{
Console.WriteLine($"{Name} 是 {Occupation}");
}
}
执行结果为:
JK Hung 是 老师
NA 是 教授
ICP备案:
公安联网备案: