C#静态类和静态成员

1. 静态类

   1.1 简介 

  •     静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。
  •     静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化
  •     当类中没有依赖对象标识的数据或行为时,就可以使用静态类。

  1.2 特点

  1.3  其他

  •     静态类是密封的,因此不可被继承。
  •     静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。

  1.4  实例

    

staticclass CompanyInfo
{
publicstaticstring GetCompanyName() { return"CompanyName"
; }
publicstaticstring GetCompanyAddress() { return"CompanyAddress"
; }
//...

}

2. 静态类成员

   2.1 简介

  • 在成员的返回类型之前使用 static 关键字来声明静态类成员
  • 即使没有创建类的实例,也可以调用该类中的静态方法、字段、属性或事件。

   2.2 特点

  • 如果创建了该类的任何实例,不能使用实例来访问静态成员。
  • 只存在静态字段和事件的一个副本,静态方法和属性只能访问静态字段和静态事件。
  • 静态成员通常用于表示不会随对象状态而变化的数据或计算;例如,数学库可能包含用于计算正弦和余弦的静态方法。
  • 静态成员在第一次被访问之前并且在任何静态构造函数(如调用的话)之前初始化。
  • 若要访问静态类成员,应使用类名而不是变量名来指定该成员的位置。

  2.3 实例

复制代码
publicclass Automobile
{
publicstaticint NumberOfWheels =4;
publicstaticint SizeOfGasTank
{
get
{
return15;
}
}
publicstaticvoid Drive() { }
publicstaticevent EventType RunOutOfGas;

//other non-static fields and properties...
}
复制代码
使用:
Automobile.Drive();
int i = Automobile.NumberOfWheels;
3. 一个使用静态类和静态类成员的实例
下面是一个静态类的示例,它包含两个在摄氏温度和华氏温度之间执行来回转换的方法:
复制代码
publicstaticclass TemperatureConverter
{
publicstaticdouble CelsiusToFahrenheit(string
temperatureCelsius)
{
// Convert argument to double for calculations.

double celsius = System.Double.Parse(temperatureCelsius);

// Convert Celsius to Fahrenheit.

double fahrenheit = (celsius *9/5) +32;

return
fahrenheit;
}

publicstaticdouble FahrenheitToCelsius(string
temperatureFahrenheit)
{
// Convert argument to double for calculations.

double fahrenheit = System.Double.Parse(temperatureFahrenheit);

// Convert Fahrenheit to Celsius.

double celsius = (fahrenheit -32) *5/9;

return
celsius;
}
}

class
TestTemperatureConverter
{
staticvoid
Main()
{
System.Console.WriteLine(
"Please select the convertor direction"
);
System.Console.WriteLine(
"1. From Celsius to Fahrenheit."
);
System.Console.WriteLine(
"2. From Fahrenheit to Celsius."
);
System.Console.Write(
":"
);

string selection =
System.Console.ReadLine();
double F, C =0
;

switch
(selection)
{
case"1"
:
System.Console.Write(
"Please enter the Celsius temperature: "
);
F
=
TemperatureConverter.CelsiusToFahrenheit(System.Console.ReadLine());
System.Console.WriteLine(
"Temperature in Fahrenheit: {0:F2}"
, F);
break
;

case"2"
:
System.Console.Write(
"Please enter the Fahrenheit temperature: "
);
C
=
TemperatureConverter.FahrenheitToCelsius(System.Console.ReadLine());
System.Console.WriteLine(
"Temperature in Celsius: {0:F2}"
, C);
break
;

default
:
System.Console.WriteLine(
"Please select a convertor."
);
break
;
}
}
}
复制代码

 

输入

2

98.6

输出:

Please select the convertor
1. From Celsius to Fahrenheit.
2. From Fahrenheit to Celsius.
:2
原文地址:https://www.cnblogs.com/lihongchen/p/3625787.html