C#静态类和静态成员
2024-10-17 06:22:31
1. 静态类
1.1 简介
- 静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。
- 静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。
- 当类中没有依赖对象标识的数据或行为时,就可以使用静态类。
1.2 特点
- 它们仅包含静态成员。
- 它们不能被实例化。
- 它们是密封的。
- 它们不能包含实例构造函数(C# 编程指南)。
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
Please enter the Fahrenheit temperature: 98.6
Temperature in Celsius: 37.00
http://www.cnblogs.com/mycom/archive/2010/03/10/1682519.html
http://www.cnblogs.com/jiapengliang2005/articles/1671991.html
http://www.cnblogs.com/lovexinger/archive/2010/04/17/1714079.html
http://www.cnblogs.com/lovexinger/archive/2010/04/17/1714082.html
最新文章
- winform开发 总结1>;winform程序使用线程的必要性,以及正确的使用方式
- 【视频教程】使用UIAutomation开发软件外挂
- fir.im Weekly - iOS 保持界面流畅的技巧
- 转:SVN常见问题与解决方法
- mysql创建远程用户
- java演示适配器(adapter)模式
- 【一天一道LeetCode】#328 Odd Even Linked List
- C/C++面试题:编写类String的构造函数、析构函数和赋值函数。
- 【原创】大叔案例分享(4)定位分析--见证scala的强大
- 阿里云,未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接.
- [LeetCode] 236. Lowest Common Ancestor of a Binary Tree_ Medium tag: DFS, Divide and conquer
- 【原创】用JQury来制作星星打分特效功能
- drupal7 覆写node-type.tpl.php获取字段值的两种方式
- 9个绚丽多彩的HTML5进度条动画赏析
- word转html 压缩图片网站
- composer gitlab 搭建私包
- java中的重量级与轻量级概念
- [Winter Vacation] 语文实词虚词练习册答案
- UI-UIButton、UILable、UITextField总结
- USACO Section1.3 Barn Repair 解题报告