首 页IT知识库收藏内容
当前位置:翔宇亭IT乐园IT知识库C#C#基础

C#中的属性

减小字体 增大字体 作者:biye5u.com  来源:本站原创  发布时间:2013-06-09 09:47:34

类在设计时,其字段成员一般被声明为私有的,如果想读取或设置其值,需要提供这样的方法,而在C#中,使用属性更充分体现了对象的封装性,让用户不直接操作类的相关数据,而是通过其提供的访问器进行访问。

属性可以是类、结构和接口的成员。其定义的形式为:

访问修饰符 数据类型 标识符
{
访问器声明;
}

访问修饰符可以是new,static,virtual,absctract,override和public,protected,private,internal的合法组合。

访问器有get访问器和set访问器两种,其声明的格式如下:

get
{
return 要访问的成员;
}

set
{
要设置值的成员 = value;
}

在使用get访问器时要注意,其使用return要返回的值必须与属性声明的数据类型相同,或能够隐式地转换为属性声明的数据类型。

set访问器的值是通过隐含的参数value带进来的,其主据类型也必须与属性声明的数据类型相同或能够进行隐式转换。

在属性定义中,get访问器和set访问器的规则如下:

(1)同时具有get访问器和set访问器的属性,其值是可以读取也可以进行修改的;

(2)只有get访问器的属性是只读属性,即这样的属性值仅允许读取,而不能进行修改;

(3)只有set访问器的属性为只写属性,即该属性的值仅能修改,而不能读取。

下面举一个例子,分别说明以上三种情况:

using System;

 

class Weather

{

  private float t; //温度

  private int w; //风级

  private string sun; //天气情况

  /// <summary>

  /// 温度属性

  /// </summary>

  public float Temperature

  {

   get

   {

     return t;

   }

   set

   {

     if(value!=t)

       t = value;

   }

 }

  /// <summary>

  /// 描述风的等级的属性

  /// </summary>

  public int Windy

  {

    set

    {

      w = value;

    }

  }

  /// <summary>

  /// 描述天气情况的属性

  /// </summary>

  public string Sun

  {

    get

    {

      return sun;

   }

  }

  /// <summary>

  /// 构造器

  /// </summary>

  public Weather()

  {

    this.sun = "天气晴朗";

  }

  /// <summary>

  /// 带参数的构造器

  /// </summary>

  /// <param name="s">描述天气情况的字符串</param>

  public Weather(string s)

  {

    this.sun = s;

  }

  /// <summary>

  /// 输出天气信息的方法

  /// </summary>

  public void PrintInfo()

  {

     Console.WriteLine("今天:{0},风级:{1},气温:{2}",sun,w,t);

   }

 }

 //定义主类进行测试

 class Test

{

  static void Main()

  {

    Weather wt = new Weather();

    // wt.Sun = "天气晴朗";//此语句将引起错误1

    wt.Temperature = 23.4f;

    wt.Windy = 4;

    Console.WriteLine("气温:{0}",wt.Temperature); //输出温度信息,即可修改亦可读取

   // Console.WriteLine("风级:{0}",wt.Windy ); //虽然可以修改,但不可读取,否则引起错误2

   Console.WriteLine("天气:{0}",wt.Sun); //虽然不能修改,但可以读

   wt.PrintInfo(); //使用类提供的方法,可以输出(读取)全部的信息

  }

}

错误1:无法对属性或索引器“Weather.Sun”赋值 -- 它是只读的

错误2:属性或索引器“Weather.Windy”无法用于此上下文中,因为它缺少 get 访问器

运行结果如下:

C#中属性的使用方法

微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。

个人成长离不开各位的关注,你的关注就是我继续前行的动力。

Tags:C# 字段 属性

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
愿您的精彩评论引起共鸣,带来思考和价值。
用户名: 查看更多评论
分 值:100分 90分 80分 70分 60分 40分 20分
内 容:
验证码:
关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2024 biye5u.com. All Rights Reserved.