一.理解静态关键字(static)
Static 是一个关键字,使得它在静态类首先被使用时仅在内部实例化一次。
二.实例化类
在没有静态的类中,我们必须实例化才能使用,但是我们可以实例化多次,并在每个实例上存储不同的数据。
namespace BasicCsharp
{
public class Customer
{
public string? name { get; set; }
public string? email { get; set; }
public string? phone { get; set; }
public string computer = "";
public Customer()
{
computer = System.Environment.MachineName;
}
}
}
这是获取客户信息的客户类。
三.使用静态和非静态方法
我们将 System.Environment.MachineName; 移到不同的类并使用静态和非静态来查看差异。
namespace BasicCsharp
{
public class CompName
{
public string getName()
{
return System.Environment.MachineName;
}
}
}
四.使类静态化
在创建这个公共类之后,我们现在可以在 Customer 类中实例化该类并使用 getName 方法。
namespace BasicCsharp
{
public class Customer
{
public string? name { get; set; }
public string? email { get; set; }
public string? phone { get; set; }
public string computer = "";
public Customer()
{
CompName computerName = new CompName();
computer = computerName.getName();
}
}
}
我们可以在实例化 CompName 后使用 getName() 方法。使用此方法,我们应该遵循 OOP 原则,并且如果实例化更多 CompName 类,还可以存储不同的数据。
但是我们可以将 CompName 类设为静态,将 getName 方法设为静态,那么我们将能够使用它们而无需手动实例化。
namespace BasicCsharp
{
public static class CompName
{
public static string getName()
{
return System.Environment.MachineName;
}
}
}
将 CompName 类设为静态,并将 getName 方法设为静态
namespace BasicCsharp
{
public class Customer
{
public string? name { get; set; }
public string? email { get; set; }
public string? phone { get; set; }
public string computer = "";
public Customer()
{
computer = CompName.getName();
}
}
}
我们可以简单地调用 getName 方法而无需实例化 CompName 类。静态类将在内部实例化,因为它只实例化一次。它们都共享数据和方法。
并且当你将类设为静态时,new 是被禁止的。
静态类是应用程序中所要使用的固定值和固定方法。所以,如果它不是固定方法或值,它就不应该是静态类。
这个静态类不会受到继承或多态的影响。