类的实例
我们定义好了一个类之后,怎样使用它呢?
在现实生活中,我们把公司的员工归成了一个类,这个类有姓名、年龄、性别等属性。公司里面的每一个员工,都是这个类里面的一个具体的人,每个人都有各自不同的姓名、年龄、性别。
下面是我们定义好的一个类,public表示可以在类的外部直接读写属性:
class Employeer
{
public string Name; // 姓名
public ushort Age; // 年龄
public bool Sex; // 性别
}
我们怎样通过定义好的类,把每个人的信息保存起来呢?这就要为类生成实例,每个实例对应一个员工,保存这名员工的信息。
假如公司里有一名男员工,叫张能,28岁,怎样把他的信息保存起来呢?使用new命令,可以给类生成一个新的实例,再把这些信息保存到这个实例里就可以了,如下:
Employeer zhang = new Employer();
zhang.Name = "张能";
zhang.Age = 28;
zhang.Sex = true;
这条语句,定义了一个类型为Employeer的变量,这个变量名是zhang。接下来,使用这个变量,保存了张能的信息。
因为bool类型的变量,只有两个值,true和false,在这里,我们使用true表示男性,使用false表示女性。如果是女权主义者,为避嫌,当然也可以反过来,兵无定势嘛。编程在一定程度上,是可以自由表达自我思想的。
变量zhang里面保存的就是类Employeer的一个实例。结合以前学习过的内容,这个变量是一个引用类型的变量,它的存储空间在托管堆里,张能的信息就保存在托管堆里为这个实例分配的内存中。
如果一名女员工,叫赵风,29,可以写下面的代码:
Employeer employeer = new Employeer();
employeer.Name = "赵风";
employeer.Age = 29;
employeer.sex = false;
这样,通过类的实例,就能保存每一名员工的信息了。
在程序里,每一个实例和现实中的一个具体的员工相对应。假如我是新来的,想知道张能的姓名,就会问他叫什么。在程序里,想要知道张能的姓名,就要去问与他对应的实例了。
Console.WriteLine("姓名:" + zhang.Name);
Console.WriteLine("年龄:" + zhang.Age);
Console.Write("性别:");
if (zhang.Sex)
{
Console.WriteLine("男");
} else
{
Console.WriteLine("女");
}
保存在变量zhang里面的实例就会告诉你张能的姓名,多大了,他是男的还是女的。完整代码如下:
using System;
namespace csdn.blog.aerosea
{
class Program
{
static void Main(string[] args)
{
Employeer zhang = new Employeer(); // 创建一个新的实例
zhang.Name = "张能"; // 保存姓名
zhang.Age = 28; // 保存年龄
zhang.Sex = true; // 保存性别
Employeer employeer = new Employeer(); // 创建另一个实例
employeer.Name = "赵风";
employeer.Age = 29;
employeer.Sex = false;
// 变量zhang里面保存的是张能的信息
Console.WriteLine("姓名:" + zhang.Name);
Console.WriteLine("年龄:" + zhang.Age);
Console.Write("性别:");
if (zhang.Sex)
{
Console.WriteLine("男");
}
else
{
Console.WriteLine("女");
}
Console.WriteLine(); // 显示一个空行
// 变量employeer中保存的是赵风的信息
Console.WriteLine("姓名:" + employeer.Name);
Console.WriteLine("年龄:" + employeer.Age);
Console.Write("性别:");
if (employeer.Sex)
{
Console.WriteLine("男");
}
else
{
Console.WriteLine("女");
}
Console.WriteLine("\n按任意键继续...");
Console.ReadKey();
}
}
class Employeer
{
public string Name; // 姓名,如果不加public,无法使用zhang.Name访问数据,以下同
public ushort Age; // 年龄
public bool Sex; // 性别
}
}
执行结果:
姓名:张能
年龄:28
性别:男
姓名:赵风
年龄:29
性别:女
按任意键继续...