Static 是C#会用到的关键字,可以用来修饰类、字段、方法、属性、运算符、事件和构造函数。今天在多线程中被静态成员不小心被撞了一下,因此将MSDN的内容整理转下来
一)静态类
Static修饰的class是静态类,具有以下的特点:
-
-
仅包含静态成员。
-
无法实例化。
-
是密封的。
-
不能包含实例构造函数
偷懒附上MS的代码
-
-
public static class TemperatureConverter
{
public static double CelsiusToFahrenheit(string temperatureCelsius)
{
// Convert argument to double for calculations.
double celsius = Double.Parse(temperatureCelsius);
// Convert Celsius to Fahrenheit.
double fahrenheit = (celsius * 9 / 5) + 32;
return fahrenheit;
}
public static double FahrenheitToCelsius(string temperatureFahrenheit)
{
// Convert argument to double for calculations.
double fahrenheit = Double.Parse(temperatureFahrenheit);
// Convert Fahrenheit to Celsius.
double celsius = (fahrenheit - 32) * 5 / 9;
return celsius;
}
}
class TestTemperatureConverter
{
static void Main()
{
Console.WriteLine("Please select the convertor direction");
Console.WriteLine("1. From Celsius to Fahrenheit.");
Console.WriteLine("2. From Fahrenheit to Celsius.");
Console.Write(":");
string selection = Console.ReadLine();
double F, C = 0;
switch (selection)
{
case "1":
Console.Write("Please enter the Celsius temperature: ");
F = TemperatureConverter.CelsiusToFahrenheit(Console.ReadLine());
Console.WriteLine("Temperature in Fahrenheit: {0:F2}", F);
break;
case "2":
Console.Write("Please enter the Fahrenheit temperature: ");
C = TemperatureConverter.FahrenheitToCelsius(Console.ReadLine());
Console.WriteLine("Temperature in Celsius: {0:F2}", C);
break;
default:
Console.WriteLine("Please select a convertor.");
break;
}
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
二)静态成员
{
public static int NumberOfWheels = 4;
public static int SizeOfGasTank
{
get
{
return 15;
}
}
public static void Drive() { }
public static event EventType RunOutOfGas;
// Other non-static fields and properties...
}
访问示例:
Automobile.Drive();
int i = Automobile.NumberOfWheels; (const关键字修饰的成员本质上是静态的 ,也用这种方式调用)
静态方法可以被重载但不能被重写,因为它们属于类,不属于类的任何实例。
三)静态构造函数
在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。静态构造函数具有以下的特点:
-
-
静态构造函数既没有访问修饰符,也没有参数。
-
类。
-
无法直接调用静态构造函数。
-
在程序中,用户无法控制何时执行静态构造函数。
-
静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。
-
静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用 LoadLibrary 方法。
-
如果静态构造函数引发异常,运行时将不会再次调用该构造函数,并且在程序运行所在的应用程序域的生存期内,类型将保持未初始化。
引用地址:
https://msdn.microsoft.com/zh-cn/library/98f28cdx.aspx;
https://msdn.microsoft.com/zh-cn/library/79b3xss3.aspx;
https://msdn.microsoft.com/zh-cn/library/k9x6w0hc.aspx;
|
请发表评论