static和this的使用
static使用注意事项
public class Bank
{
public string account;
poublic static void Setaccount()
{
//这样写会直接报错
//因为account 是实例变量,也称为对象变量,static 方法无法直接访问,
// 需要先有对象才能访问实例变量
account = "test";
}
}
public class Bank
{
public static string account;
poublic static void Setaccount()
{
//正常,静态方法访问静态变量
account = "test";
}
}
public class Bank
{
public string account;
poublic static void Setaccount()
{
//正常,先创建对象,再使用实例对象
var bank = new Bank();
bank.account = "test";
}
}
this使用注意事项
public class Bank
{
public string account;
poublic void Setaccount(string account)
{
//报错, “就近原则”两个account 都指向传参account,
//第一个account而不是实例对象
account = account;
}
}
public class Bank
{
public string account;
poublic void Setaccount(string account)
{
//加上this, 就可给实例对象赋值了
this.account = account;
}
}
//静态类 静态方法, 可用作扩展方法
public static class Bank
{
public static string account;
poublic static void Setaccount(this string account)
{
this.account = account;
}
}
静态属性,在类加载的时候实例化
使用静态属性,直接用"类名."的方式引用,无需使用“引用.” 的方式
//静态方法的调用
public class Bank
{
public static string account;
poublic static void Setaccount(this string account)
{
this.account = account;
}
public void Test()
{
//可以执行
Setaccount();
//也可以执行
Bank.Setaccount();
//也可以执行
var bank = new Bank();
bank.Setaccount();
//将对象置为null, 仍然可以执行
var bank = new Bank();
bank = null;
bank.Setaccount();//说明Setaccount()调用的直接用"类名."的方式引用,无需使用“引用.” 的方式
}
}