1.属性
- 定义
public/private/protected int name
{
get
{
//get code
}
set
{
//set code
}
}
定义属性需要名字和类型,属性包含两个块,get块和set块,访问属性和访问字段一样,当取得属性的值的时候,就会调用属性中的get块,所以get块需要一个返回值,且必须是属性的类型;当给属性设置值的时候,就会调用属性中的set块,我们可以在set块中通过value访问到我们设置的值。
例如:
class Gods
{
public string Cracky
{
get
{
return "101 loyal dogs";
}
set
{
Console.WriteLine("Value的值为:" + value);
}
}
}
若
class Program
{
static void Main(string[] args)
{
Gods god = new Gods();
god.Cracky = "Keys";
string happiness = god.Cracky;
Console.WriteLine(happiness);
}
}
输出为
注意此处get中输出的不是存入的值(因return返回的不是)
设置属性的只读或只写
- 如果没有set块,该属性就为只读,不能向其设置值;如果没有get访问器,该属性就为只写,不能通过该属性取值。
- 将属性中的块名前加上private访问修饰符,则只能在属性所在的类里面进行操作,其它类无法操作。
- 通过属性访问字段
可以在set方法中设置字段的值和访问字段的值,并做一些校验的工作。
例如:
class Gods
{
private int score;
public int Test
{
get
{
return score;
}
set
{
if (value >= 0)
score = value;
}
}
}
若
class Program
{
static void Main(string[] args)
{
Gods god = new Gods();
god.Test = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(god.Test);
}
}
输出为
3.自动实现的属性
若属性中的get块和set块里未写任何代码,则编译器会自动为我们提供一个字段来存储我们设置的值。
例如:
class Gods
{
private int score;
public int Test
{
get;//未写任何代码
set;//未写任何代码
}
}
若
class Program
{
static void Main(string[] args)
{
Gods god = new Gods();
god.Test = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(god.Test);
}
}
输出为
2.匿名类型
我们创建变量的时候必须指定类型,当我们选择不指定的时候就是匿名类型,可以使用var声明一个匿名类型。
可以通过var声明对象
例如:
var god = new Gods();
使用var声明的匿名类型,当我们对其初始化的时候,这个变量的类型就被确定下来,并且以后不可以修改。
注意:
引用其它项目中的类时,要在类前加上public访问修饰符