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

C#静态类和静态成员的更多相关文章

  1. C# 静态类与非静态类、静态成员的区别

    静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例 ...

  2. 深入理解C# 静态类与非静态类、静态成员的区别

    静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例 ...

  3. C#基础(七)——静态类与非静态类、静态成员的区别

    静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例 ...

  4. C# 静态类与非静态类、静态成员的区别分析

    静态类静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化 ...

  5. C#面向对象2 静态类、静态成员的理解

    理解:静态成员属于类所有,为各个类的实例所公用,与实例无关,需要全局共享的属性或者方法定义成静态的 C#静态成员:  1.静态成员属于类所有,故用类名调用,非静态成员属于类的实例所有,用实例名调用  ...

  6. 深入理解C# 静态类与非静态类、静态成员的区别 [转载]

    静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例 ...

  7. C#静态类、静态成员、静态方法

    一.作用 静态类和非静态类重要的区别是在于静态类不能被实例化,也就是说不能使用  new 关键字创建静态类类型的变量,防止程序员写代码来实例化该静态类或者在类的内部声明任何实例字段或方法. 用于存放不 ...

  8. 深入理解 静态类和静态字段(C# 基础)

    序言 以前,总是被提醒,在编程过程中尽量少用静态变量,数据丢失什么的,今天有空,禁不住对静态变量的强烈好奇,跟我一起了解下静态家族的内幕吧. 静态类 定义 静态类与非静态类的重要区别在于静态类不能实例 ...

  9. C#中的静态成员和非静态成员

    C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用上会有什么不同呢? 让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法 ...

随机推荐

  1. Python eclipse开发环境搭建

    http://jingyan.baidu.com/article/cd4c2979101f02756f6e6064.html http://jingyan.baidu.com/article/1876 ...

  2. php提示Fatal error: Call to undefined function imagecreate()

    在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会 / ...

  3. js事件知识整理

    鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover 之后如果光标继续在元素上移动,则不断触发mousemove 如果按下鼠标上的设备(左键,右键,滚轮……),则触发mousedown ...

  4. jQuery学习小结3——AJAX

    一.jQuery的Ajax方法 jQuery对Ajax 做了大量的封装,使用起来也较为方便,不需要去考虑浏览器兼容性.对于封装的方式,jQuery 采用了三层封装: 最底层的封装方法为——$.ajax ...

  5. C#启动一个外部程序(1)-WinExec

    C#启动一个外部程序(1)-WinExec 调用Win32 API.1. using System.Runtime.InteropServices; 2. //        //#define SW ...

  6. 设置AFNetworking网络请求的超时时间

    http://www.mamicode.com/info-detail-511816.html // 设置超时时间 [manager.requestSerializer willChangeValue ...

  7. Program A - 暴力求解

    Description   Write a program that finds and displays all pairs of 5-digit numbers that between them ...

  8. JSON基础使用

    1)JSON概念 JSON 是纯文本 JSON 具有“自我描述性”(人类可读) JSON 具有层级结构(值中存在值) JSON 可通过 JavaScript 进行解析 JSON 数据可使用 AJAX ...

  9. Google https服务被屏蔽

    根据Google透明度报告显示,从上周(5月27日)开始,Google的部分服务开始被屏蔽,其中最主要的是HTTPS搜索服务和Google登录服务,所有版本的Google都受到影响,包括Google. ...

  10. SharePoint 2013 重复的管理账户错误:已添加项。字典中的关键字 所添加的关键字

    博客地址:http://blog.csdn.net/FoxDave 今天在管理中心创建新的Web应用程序时,想注册一个新的管理账户,一着急点了两次按钮,结果就出现了这样的错误...怎么说呢,太奇葩 ...