static 关键字也是 using static 指令的一部分。
使用 static 修饰符可声明属于类型本身而不是属于特定对象的静态成员。static 修饰符可用于声明 static 类。在类、接口和结构中,可以将 static 修饰符添加到字段、方法、属性、运算符、事件和构造函数。static 修饰符不能用于索引器或终结器。
可以将 static 修饰符添加到本地函数。静态本地函数无法捕获局部变量或实例状态。
static 类
{
static void Main ( string [ ] args )
{
Console . WriteLine ( Lei常数 . E );
Console . WriteLine ( Lei常数 . Pi );
}
}
public static class Lei常数
{
public const double E = double . E;
public const double Pi = double . Pi;
}
static 类的常数隐式的是 static 的。
无法声明静态类的实例,警告 CS0723:无法声明静态类型“Lei常数”的变量。
public static class Lei常数
{
public struct JG原点
{
public static int X = 0;
public static int Y = 0;
}
}
static void Main ( string [ ] args )
{
Console . WriteLine ( $"< {Lei常数 . JG原点 . X},{Lei常数 . JG原点 . Y} >" );
}
上例输出:
< 0,0 >
上例只能使用完全限定的名称 Lei常数 . JG原点 . X 或 Y 引用静态成员,除非你的代码在 Lei常数 static 类里面。
对于非 static 类,尽管类的实例包含该类的所有实例字段的单独副本,但每个 static 字段只有一个副本。
不可以使用 this 引用 static 方法或属性访问器。
如果 static 关键字应用于类,则类的所有成员(除常数和结构)都必须为 static。
class、interface 和 static 类可以具有 static 构造函数。在程序开始和实例化类之间的某个时刻调用 static 构造函数。
备注:static 关键字比用于 C++ 中时受到的限制更多。
若要演示 static 成员,请考虑表示“小狗”(XiaoGou)的类。假定此类包含计数小狗的方法和存储小狗人数的字段。方法和字段均不属于任何一个小狗实例。相反,它们属于全体小狗这个类。应将其声明为该类的 static 成员。
静态的字段或方法
此示例读取新狗的姓名和 ID,员工计数器按 1 递增,并显示新狗信息和新狗数。此程序从键盘读取小狗的当前数。
public class XiaoGou
{
public string _ID , _Ming;
public XiaoGou ( )
{
}
public XiaoGou ( string ID , string 名 )
{
_ID = ID ;
_Ming = 名;
}
public static int JiShuXiaoGou;
public static int TianJiaGou ( )
{
return ++JiShuXiaoGou;
}
}
Console . Write ( "输入小狗的名字:" );
string ming = Console . ReadLine ( );
Console . Write ( "输入小狗的 ID:" );
string ID = Console . ReadLine ( );
XiaoGou g = new XiaoGou ( "001" , "来福" );
Console . Write ( "输入小狗的数量:" );
string n = Console . ReadLine ( );
XiaoGou . JiShuXiaoGou = int . Parse ( n );
XiaoGou . TianJiaGou ( );
Console . WriteLine ( $"{g . _Ming},{g . _ID}" );
Console . WriteLine ( $"狗的新数量:{XiaoGou . JiShuXiaoGou}" );
Static 初始化
此示例演示了如何使用尚未声明的 static 字段来初始化另一个 static 字段。在向 static 字段显式赋值之后才会定义结果。
{
static int x = y; // 此时的 y 等于 0
static int y = 10; // 此时的 x 等于 y 还是 0,但此后的……
static void Main ( string [ ] args )
{
Console . WriteLine ( $"X = {x}" ); // 输出:0
Console . WriteLine ( $"Y = {y}" ); // 输出:10
x = 120;
Console . WriteLine ( x ); // 输出:120
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。