C#类的函数成员之普通方法和属性

C#类的函数成员

共分为以下几种:

  1. 构造函数
  2. 析构函数
  3. 类的方法
  4. 类的静态方法
  5. 属性
  6. 运算符
  7. 索引器

一、方法

一个类中包含很多形形色色的方法。它与普通的方法很类似。

class MathTest
{
	public int value;           //字段,就是类中的变量
	public int GetSquare()		//普通类的方法
	{
		return value*value;
 	}
 	public static int GetSquareOf(int x) //静态方法
 	{
		return x*x;
	}
	public static double GetPi()   //静态方法
	{
		return 3.1415926;
	}
}

二、属性

属性的概念是:它是一个方法或一对方法,它可以对字段进行读和写或者只读不写,只写不读。

为什么需要属性?
当我们相对字段进行操作时,在显示中往往有一些约束。
例如我们想对字段age赋值时希望其值大于0小于150.
例如我们想对某字段只能读不能写
例如我们相对一个私有字段进行访问但不想破坏私有性

class myClass
{
	private int age;   //类中一个字段
	public int Age    //类的属性,主要它也是类的函数但极为特殊。
	{
		get{ return age;} //经过这种方式就可以返回私有字段age的值了
		set{ age=value;}  
		//经过这种方式可以设置私有字段age,注意这里的value默认的一种规范
	}

    private int age2;
    public int Age2
    {
		get{return age2;}
		set
		{
			if(value>150)
				age2=150;     //如果赋值的值大于150,就按照150的算
			else
			    age2=value;   //否则赋值的值就是value
		}
	}
}
//使用
Console.WriteLine(myClass.Age);   //将age输出,注意使用的时候需要用Age不是age
myClass.age=200; //因为age是私有数据成员本不能赋值的,但是因为有属性在,就可以利用属性进行赋值和读取了。
Console.WriteLine(myClass.Age);   //重新的输出age,这里的age就是200

由上面的代码我们可以看出来,这里的age是私有数据成员,正常情况是不可能对其进行赋值的,但是有属性的作用下我们可以进行赋值。整个过程是这样的。myClass.age=200;是会调用public int Age属性。首先会将200赋值给value。然后执行属性中的set,将value的值赋值给age即完成了赋值的操作。同理,读取的时候回执行属性中的get函数,它会将age返回给调用方。

age2的属性中的设置需要进行判断,如果大于150则按照150的来算,如果不大于150就按照实际赋值的来算。如此便可以达到控制输入数据大小的目的。这也是属性的优点。

属性的只读和只写
如上代码可对age进行读和写。但是如果我们想要对某个字段只读的话,只要将set删除即可

private int age;
public int Age
{
	get{return age;}   //只有get,则age就只能够读不能够写
}

同样的也可对某个字段只写不读。只要删除get而保留set即可。

另外get和set访问器也可设置访问级别。例如
get {return age;}
private set{age=value;}

当然也可自动实现属性

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace test
{
    class Test  //创建一个类Test
    {
        public int Age { get; set; }   
        //直声明一个属性这里没有声明age,因为程序会自动的声明private int age;编译器会自动创建它。只不过这种情况下无法实现字段的逻辑合理性。
    }
    class Program
    {
        static void Main(string[] args)
        {
            Test myTest = new Test();
            myTest.Age = 100;
            Console.WriteLine(myTest.Age);
            Console.ReadKey();
        }
    }
}

你可能感兴趣的:(C#宝典)