using System;
namespace GetAndSet
{
class Program
{
static void Main(string[] args)
{
Student stu = new Student();
stu.SetAge(29);//通过公有方法设置Age
Console.WriteLine(stu.Old_GetAge());//通过公有方法读取Age
int score = stu.score = 100;
Console.WriteLine(stu.score);
}
}
//本示例的Age使用的是老方法来保障私有变量的安全,Score使用新方法语法糖,可以看一下两种方法的不同.
//这里c#的演示,Old方法是传统的Pascal使用的办法,而新方法score是一种c#的语法糖
class Student
{
private int Age; //私有成员,不允许直接访问
private int Score;
public int score //新方法,语法糖开始,注意这里是小写,和上面的变量名称不一致,我饶了蛮久
{
get
{
return this.Score;
}
set
{
if (value>=0 && value<=100)
{
this.Score = value;
}
else
{
throw new Exception("Value值不正确");
}
}
}
public int Old_GetAge() //公有方法,通过方法访问
{
return this.Age;
}
public void SetAge(int Value) //公有方法,设置规则,符合规则予以设置
{
if (Value>=0 && Value<=100)
{
this.Age = Value;
}
else
{
throw new Exception("Value值不正确");
}
}
}
}
提示:
在vsIDE内,输入propfull,再按两次TAB键,会自动生成如下内容
//以下为实例属性,一般用来书写代表实例数据的内容
private int myVar;
public int MyProperty
{
get { return myVar; }
set { myVar = value; }
}
//以下为静态属性,一般用来书写代表类型的数据,例如人类,他的公有属性--人口
//静态属性添加static即可
private static int myVar;
public static int MyProperty
{
get { return myVar; }
set { myVar = value; }
}
如果你不写propfull,只写prop,然后按两下TAB的话,vs会直接帮你进行简易声明
public int MyProperty { get; set; }
这样的声明呢,也是语法糖的一种,这样申明好之后,也能够直接以class.Myproperty进行访问,但是他不具有安全性,是可以直接进行数据访问和修改的.
如果把上面的所有方法里删除set方法的话,那么他就变成了一个只读属性
就是只能访问get
private int myVar;
public int MyProperty
{
get { return myVar; }
private set { myVar = value; } //设为私有
}
以上呢,你就不能在这个类之外去访问set了,因为他已经成了一个私有方法,myVar只能在当前类中被访问