using System; public class Employee
{
public string eName;
private string internal_eDept;
public string eDapt
{
get
{
return internal_eDept;
}
set
{
internal_eDept = value;
}
}
class Test
{
static void Main()
{
Employee one = new Employee();
one.eName = "Scooby";
one.eDapt ="Design";
Console.WriteLine("The Name of the Employee is {0} and the Department is {1}",one.eName,one.eDapt);
}
} }
{
public string eName;
private string internal_eDept;
public string eDapt
{
get
{
return internal_eDept;
}
set
{
internal_eDept = value;
}
}
class Test
{
static void Main()
{
Employee one = new Employee();
one.eName = "Scooby";
one.eDapt ="Design";
Console.WriteLine("The Name of the Employee is {0} and the Department is {1}",one.eName,one.eDapt);
}
} }
解决方案 »
- c#在数据库中读取数据,按照指定格式输出txt
- 怎样实现DataGridView与DataTable的关联操作
- 急:C#怎样使用正则表达式去掉字符串中所有的html标记
- 原谅最近穷的没分:有关隐藏桢和Ajax实现无刷新问题?
- 为行设定了默认值在新增时却没有反应
- c# 中如何判断一个程序是否正在运行?
- 请问一下,能直接将C#中的bool类型值插入到SQL 数据库中的bit类型字段中吗?
- 请问如何在c/s程序中将图片上传或者下载到本地?
- C#设计贪吃蛇的界面问题
- 我想用c#写一个FTP的客户类,但是对FTP规范不是很熟悉,想请教一下大家!
- .Net Framework的IList接口如何使用?
- 请问高手我要实现这样的一个属性的索引,我需要继承什么接口
虽然设置为private但是还是可以直接以Employee.internal_eDept的方式访问。
但是只是private成员变量的话,这样访问就会报错。而且,一般来说,使用属性是想以方便的方式访问对象的成员,而且又要遵循一些属性的型别限制。
在.net中,推崇使用属性,而尽量避免使用public成员变量。
详细的说明可以查阅MSDN
共有字段可以外部直接访问,但面向对象的程序不推荐。属性、方法等就是函数,
函数(属性)就是访问成员变量的(方法),必须为公有public,不然外部也无法访问。
public string eDept {
get { return internal_eDept; }
set {
if (value == null || value == String.Empty)
throw new ArgumentException("未指定部门名称", "eDept");
internal_eDept = value;
}
}
这样,用于保存雇员部门的字段就可以免予被赋予空值的困扰了。
再例:
private int count;
public int Count {
get { return count; }
// 没有 set - 不能直接修改 Count
}
public bool IsEmpty {
get { return count == 0; }
}
上例里,Count 属性只有 get 没有 set,这就有效防止外部修改 count 变量(字段),确保数据统一,但仍然允许外部获取 count 的值。如果直接将 count 字段公开,那么任何调用者都可以直接修改了。
此外,属性也不一定要有一一配对的私有字段,例如上例里,IsEmpty属性没有相对应的私有字段,当调用者获取它的值的时候,get{}里面的代码访问对象的其他成员确定返回值。最后,属性不一定是public的,也可以定义protected甚至private的属性,只要程序员觉得方便,在程序语言的逻辑规定内任意创新,完全没有问题。
我现在不明白的是
public class Employee
{
public string eName;
......
class Test
{
static void Main()
{
Employee one = new Employee();
one.eName = "Scooby";
这个地方~
和你们讲的有什么区别
......
public string EXXXNAme
{
get
{
return eName;
}
set
{
eName= value;
}
}
还可以定义类的一些共有的方法来访问
public setSomeValueaName(string strName)
{
this.eName = strName ;
}
public string GetSomeValueaName()
{
rturn this.eName ;
}
还有属性可以设一些相应的访问权限,例如只读....