{
/**//* MinPasswordLenth为静态字段或静态数据 ,本字段只存储一次(有关键字static)
Password为实例字段或实例数据,创建多少该类的实例,本字段就存储几次(无关键字static)
另一个重要区别,静态字段属于类,实例字段属于对象
*/
private static uint MinPasswordLenth=6; //静态字段
private string Password;//实例字段
/**//*无论实例方法还是静态方法,只存储一次,并与类相关.
实例方法会利用一个隐式的外部参数(this),该参数引用相关类实例所在的内存。
绝对不能显式这个外部参数,但它总是存在的。
要访问实例字段,则不要加static.下面没使用static故可以访问Password实例字段!
*/
public bool IsPasswordCorrect(string password)
{
return (password==Password)?true:false;
}
public bool ChangePassword(string oldpassword,string newpassword)
{
if(oldpassword==Password)
{
Password=newpassword;
return true;
}
else{return false;}
}
/**//*静态方法,属于类而不是对象调用时直接用 [类.静态方法],标志是:static
静态方法是不可以访问类的实例数据的,
如:方法GetMinPasswordLength 是不可以访问实例字段 Password的
*/ //[属性MinPasswordLenth的获取与设置]
public static uint GetMinPasswordLength()
{
return MinPasswordLenth;
}
public static void SetMinPasswordLength(uint value)
{
MinPasswordLenth=value;
}
// 属性最好如下这样做[虽然与上面写两个方法的功能是一样],还比较符合常规:
//定义属性,get与set存取器
public static uint MinLenth
{
/**//*注意:这里属性是静态的,一般是不必要的。同方法一样,只有属性指向静态数据时。
才必须把属性声明为static,大多情况没这个必要。可以只有get或者只有set部分,但
不建议这样!
*/
get
{
return MinPasswordLenth;
}
set
{
MinPasswordLenth=value;
}
}
}
引用类型和值类型
把一个变量声明为基本的预定义类型时,例如int,uint,double,float和bool等,就实例化了
一个值类型的变量。每个变量都包含它自己的数据副本。
如: int i=10;
int j,k;
j=i;
k=10; //此时均为10
++j; //此时只有j为11,i,k仍旧为10
#类都是引用类型的,这样每个变量都只包含存储类实例的内存的引用,而不是创建这个实例
的实际数据的引用。这是实例化类时为什么使用new运算符的原因。
如: authenticator User1;
authenticator User2=new authenticator();
authenticator User3=new authenticator();
User1=User2;
User2.SetPassword(null,"abc");
User3.SetPassword(null,"abc");
if(User2==User3) //虽然具有相同的新密码,但返回false,执行else部分。
{.........}
else
{.........}
if(User1==User2)//返回true,因为User1与User2指向内存中相同的地址。
{.........}
else
{.........}