C#入门系列 -- 类的属性、索引、事件和this关键字
【摘要】 类的属性类字段的访问权限一般定义为private或protected,类外用户通过类的public方法来访问。C#的属性把字段和访问它们的方法相结合。属性为类用户提供了与字段读写相同的使用方法;属性值的读写通过get访问器和set访问器实现的,可以对非法的赋值进行检查过滤。属性的定义定义格式:[访问修饰符] 属性类型 属性名{ get{ return 表达式;} set{ value关...
类的属性
类字段的访问权限一般定义为private或protected,类外用户通过类的public方法来访问。
C#的属性把字段和访问它们的方法相结合。
属性为类用户提供了与字段读写相同的使用方法;
属性值的读写通过get访问器
和set访问器
实现的,可以对非法的赋值进行检查过滤。
- 属性的定义
定义格式:
[访问修饰符] 属性类型 属性名
{
get{ return 表达式;}
set{ value关键字接收外面传值;}
}
代码:
// 简化写法
public string Name {get; set;}
// 设置只读属性,只写同理
public int Age { get; private set; }
// 性别示例
int gender = 0;
/// <summary>
/// 0:女,1:男
/// </summary>
public int Gender
{
get { return gender; }
set
{
// 认为值1为男,其他值为女
if (value == 1)
{
gender = 1;
}
else
{
gender = 0;
}
}
}
- 静态属性
根据声明时是否使用static修饰符,可以将属性分为静态属性和实例属性。
静态属性不与特定实例相关联,引用语法为:
类名.属性名
类的索引
索引是一组get和set
访问器,支持按照引用数组元素的方法来索引对象。
索引通常表示多个数据成员,并且它总是以类的实例成员的方式存在。
一般语法形式:
返回类型 this[参数列表]
{
get{……}
set{……}
}
代码示例:
class Program
{
static void Main(string[] args)
{
Test t = new Test();
// 通过索引访问Test的私有变量x,y
Console.WriteLine(t[0] + "," + t[1]); // 输出:0,0
// 通过索引为x,y赋值
t[0] = 1;
t[1] = 2;
Console.WriteLine(t[0] + "," + t[1]); // 输出:1,2
Console.ReadLine();
}
}
class Test
{
int x = 0;
int y = 0;
public int this[int index]
{
get
{
if (index == 0)
{
return x;
}
else
{
return y;
}
}
set
{
if (index == 0)
{
x = value;
}
else
{
y = value;
}
}
}
}
- 索引支持重载,只要索引的参数列表不同即可。
类的事件
事件是一种使对象或类能够提供通知的成员。客户端可以通过提供事件处理程序为相应的事件添加可执行代码。
事件机制是以消息为基础的,特定的操作会发生相应的消息,而关注该事件的对象收到这些消息时,即开始执行指定的处理过程。
this关键字
**this **关键字是对当前对象的引用。
this访问只能在实例构造函数、实例方法或属性和索引的实例访问器中使用,不能在任何静态函数成员的代码中使用。它通常用作以下两个目的:
- 用于区分类的成员和方法的本地变量或参数;
- 用作调用方法的实参。
常用方式代码示例:
int x = 0;
int y = 0;
public Test(int x, int y)
{
//类成员x 参数x
this.x = x;
this.y = y;
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)