【C#】——属性和方法(上)

【C#】——属性

属性和和方法是C#程序中的两个重要组成部分。
属性是提供灵活的机制来读取、编写或计算私有西促单的值。
方法则以一部分代码构成代码块的形式存在,用来实现一部分特定的功能。


  • 属性的基本概念
  • 属性的定义及使用
  • 方法的基本概念
  • 方法的声明及使用
  • 掌握重载方法的使用
  • Main方法的用途及注意事项

属性提供功能强大的方法及将声明信息与C#代码(类型、方法、属性等)相关联,一旦舒心关于程序实体关联,即可使用名为反射的技术对属性进行查询。

属性概述

1.属性是一种用于访问对象或类的特性的成员。
属性可以包括字符串的长度、字体的大小、窗体的标题和客户的名称等。
属性是成员的自然扩展,两者都是关联类型的命名成员。

2.属性结合了字段和方法的多个方面。
对于对象的用户,属性显示为字段,访问改属性需要完全相同的语法。
对于类的实现者,属性是一个或两个代码块,表示一个get访问器和(或)一个set访问器。当读取属性值时,执行get访问器的代码块。当向属性分配一个新值时,执行set访问器的代码块。
不具有set访问器的属性被视为只读属性,不具有get访问器的属性被视为只读属性,同时具有这两个访问器的属性为可读可写属性。

  • 列表内容

    注意:属性不能作为ref参数或out参数传递。

    属性特点

1.属性可向程序中添加元数据。元数据是嵌入程序中的信息,如编译器指令或数据描述。
2.程序可以使用反射检查自己的元数据。
3.通产更实用属性与COM交互。

属性以两种形式存在:一种是在公共语言运行库的基类库中定义的属性;另一种是可以创建,biang可以向代码中添加附加信息的自定义属性。

  • 下面代码用来将System.Reflection.TypeAttributes.Serializable属性用于自定义类,以便使该类中的成员可以序列化。
[System.Serializable]
public clas MyClass
{}

上面代码中的Serializable为.Net.Framework类库中定义的属性。
自定义属性在类模块内是通过以下方式声明的:制定属性的访问级别,后面是属性的类型,接下来是属性的名称,然后是声明get访问器和(或)set访问器的代码模块。

  • 下面代码自定义了一个Data类,该类中有一个属性day,因为该属性提供了get和set访问器,因此踏实刻度可写属性。
public class Data
    {
        private int Day = 7;
        public int day//星期属性,该属性为可读可写
        {
            get { return Day;}
            set
            {
                if ((value > 0) && (value < 8))
                {
                    Day = value;
                }
            }
        }
    }
  • 说明:get访问器与方法体相似,它必须返回属性类型的值;而set访问器类似于返回类型为void的方法,它使用称为value的隐式参数,此参数的类型是属性的类型。

属性的使用

对象名.属性名

  • 1.如果在其他类中调用自定义属性,必须将自定义舒心过得访问级别设置为public。
  • 2.如果属性为只读属性,不能在调用时为其赋值,否则产生异常。

  • 创建一个控制台了应用程序,其中定义了一个MyClass类,并在该勒种定义了两个string类型的变量,分别用来记录用户的编号和姓名。然后在该类中自定义两个属性,用来表示用户编号和姓名。定义完成后,在Program主程序类中实例化自定义类MyClass的一个兑现个,分别给其中定义的用户编号和用户姓名属性赋值。最后调用Console类的WriteLine方法将赋值后的用户编号和用户姓名输出。

class MyClass
{
    private string id = "";
    private string name = "";
    public string ID
    {
        get
        {
            return id;
        }
        set
        {
            id = value;
        }
    }
    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
}
class Program
{
    MyClass myclass = new MyClass();
    myclass.ID="BH001";
    myclass.Name="TM1";
    Console.WriateLine(myclass.ID+""+myxlass.Name);
    myclass.ID="BH002";
    myclass.Name="TM2";
    Console.WriateLine(myclass.ID+""+myxlass.Name);
}

猜你喜欢

转载自blog.csdn.net/cangsheng45/article/details/79468941