C#入门系列 -- 类的属性、索引、事件和this关键字

举报
陈言必行 发表于 2022/03/13 10:28:43 2022/03/13
【摘要】 类的属性类字段的访问权限一般定义为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访问只能在实例构造函数、实例方法或属性和索引的实例访问器中使用,不能在任何静态函数成员的代码中使用。它通常用作以下两个目的:

  1. 用于区分类的成员和方法的本地变量或参数;
  2. 用作调用方法的实参。

常用方式代码示例:

int x = 0;
int y = 0;
public Test(int x, int y)
{
    //类成员x    参数x
    this.x   =  x;
    this.y =  y;
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。