C#中静态方法是什么意思?静态成员呢?还有静态类?

C#中静态方法是什么意思?静态成员呢?还有静态类?

给你举个例子就明白了!!!!

静态方法用于表示类所具有的行为,而非其对象所具体的行为。
例如: 学生分班这项任务,就是全体学生集体的事情,并并不是只是某个学生的事。
静态方法通过在定义中使用static 关键字来声明,static关键字放在修饰符和方法返回的类型之前,格式: 【方法修饰】 static 返回值类型 方法名称(参数列表) {方法体}
说明:它的访问关键字,也就是方法修饰符,和普通方法一样的,但很少使用private,因为一般需要外部的类来访问这些定义的静态方法。
在调用静态方法时,是不需要实例化类的对象,直接引用即可。这是静态类和静态方法特别之处,与普通类和方法的区别就在这里!

例子:下面给出使用静态方法的典型例子,计算矩形的面积
///<summary>
///矩形类
///<\summary>
public class sqrt
{
///<summary>
///计算矩形面积,静态方法
///<\summary>
public static void GetArea(double _width, double _height)
{
Console.WriteLine(_width *_height);
}
上面的方法使用创建了一个类Sqrt,并有一个静态的方法GetArea()用于计算一个矩形的面积,使用非常简单,调用这一静态方法可使用如下代码:
static void Main(string args)
{
Sqrt.GetArea(20,10);//输出为200
}
直接使用sqrt这个类引用这一方法,而无需实例化一个矩形对象。

下面网友说的很正确,这个静态方法是不能被实例化的如:
sqrt ShiLi =new sqrt();
ShiLi.GetArea(20,10);
是错误的,开始就是说静态方法描述的是集体,不是某个对象,因此无法实例化。

静态成员:包括数据成员、方法成员、类型成员。成员可以是常量、字段、对象等。
其中静态字段需要使用关键字static:
例如: static int Total ;
静态成员属于类,所以要用“类名.静态字段”的样式
int i=200;
sqrt.Total=i;
c#中当然还有其他静态成员,例如静态方法!!!在此强调一点,静态方法只能直接访问静态类!

静态类:它任然具有对象的抽象性,类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。
静态类的特点:仅包含静态成员。不能被实例化。是密封的。不能包含实例构造函数。
其静态类像一个容器一样囊括了,这些静态方法、静态字段、包括类用到的属性、容纳了许多的参数以及一些其他的能辅助该完成功能的内容。可简单的理解为放静态方法、静态属性的不能被实例化的类!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-26
类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR;特指:C#语言) 自动加载。

使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法
在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。例如:

class test{

public:

test(){}

~test(){}

public:

//静态成员函数

static int getCount(){

return m_nCount;

}

private:

//静态数据成员

static int m_nCount;

};

int test::m_nCount=0;

静态数据成员和普通数据成员区别较大,体现在下面几点:

(1)普通数据成员属于类的一个具体的对象,只有对象被创建了,普通数据成员才会被分配内存。而静态数据成员属于整个类,即使没有任何对象创建,类的静态数据成员变量也存在。

(2)因为类的静态数据成员的存在不依赖与于任何类对象的存在,类的静态数据成员应该在代码中被显示的初始化,一定要在类外进行,例如上例。

(3)外部访问类的静态成员只能通过类名来访问,例如:test::getCount()。

(4)类的静态成员函数无法直接访问普通数据成员(可以通过类的指针等作为参数间接访问),而类的任何成员函数都可以访问类的静态数据成员。

(5)静态成员和类的普通成员一样,也具有public、protected、private3种访问级别,也可以具有返回值、const修饰符等参数
第2个回答  2011-03-17
静态类不能实例化(也就是我们通常说的不能new),静态类中只能包含静态成员!如果一个类中有个静态方法,那么你可以直接用类名去调用这个方法!

还有就是实例类也可以包涵静态成员(比如属性),但是你在实例化一个对象时。他首先会初始化这个类中的静态成员,然后再初始化非静态成员!所以一楼的说法欠妥当。

例如你某个类中有个 public static int number=100;
那么你所有这个类实例化出来的对象的这个number的值都指向同一个对象,改变任何一个对象的这个number的值,另一个对象的number的值也跟着改变了!~
第3个回答  2011-03-17
都是在程序一开始运行时就分配空间的意思,非静态方法、成员、类等只有在调用到的时候才分配空间,如果你的程序频繁用到一些工具方法,就可以把这些方法设为静态方法
第4个回答  2011-03-23
静态方法被调用的时候是通过类名访问的比如Users类中有一个表态方法Add(),调用的时候可以直接这个写 Users.Add(); 静态成员包括静态方法和静态的全属变理,而静态类就是在声名类的时间在class前面加static关键字
相似回答