C#静态static的用法实例分析
什么是C#静态static
C#中可以使用static
关键字来表示静态成员。所谓静态成员,就是可以在不实例化类的情况下访问的成员。静态成员可以是属性、方法、字段等。
public class MyClass
{
public static int MyStaticProperty { get; set; }
public static void MyStaticMethod() { }
public static int MyStaticField;
}
静态成员的用法
访问静态成员
由于静态成员不依赖于对象实例,因此可以使用类名直接访问静态成员:
int myValue = MyClass.MyStaticProperty;
MyClass.MyStaticMethod();
MyClass.MyStaticField = 10;
静态构造函数
静态构造函数是在访问静态成员之前自动调用的。静态构造函数只能定义一个,并且不能带有参数,其语法如下:
static MyClass()
{
// 静态构造函数的代码
}
静态方法的用法
静态方法不依赖于对象实例,可以直接通过类名调用。静态方法通常用来处理全局变量和全局数据,或者对数据集合进行操作等。下面是一个示例:
public class MathHelper
{
public static int Add(int x, int y)
{
return x + y;
}
}
int result = MathHelper.Add(1, 2); // result的值为3
静态字段的用法
静态字段也不依赖于对象实例,可以直接通过类名访问。静态字段通常用于类共享的数据。下面是一个示例:
public class Counter
{
public static int Count = 0;
public static void Increment()
{
Count++;
}
}
Counter.Increment();
int count = Counter.Count; // count的值为1
示例说明
示例一:计数器
下面是一个计数器示例,使用静态字段和静态方法实现。实现一个计数器类,能够记录创建的实例数:
public class Counter
{
public static int InstanceCount = 0;
public Counter()
{
InstanceCount++;
}
}
在使用该计数器类时,每当创建一个实例时,计数器的值就会增加1:
Counter c1 = new Counter();
Counter c2 = new Counter();
Console.WriteLine(Counter.InstanceCount); // 输出2
示例二:日志记录器
下面是另一个示例,使用静态方法和静态字段实现一个日志记录器。日志记录器可以记录日志信息,并且可以指定日志级别:
public class Logger
{
public enum LogLevel
{
Debug,
Info,
Warning,
Error
}
public static LogLevel LogLevelThreshold = LogLevel.Info;
public static void Log(string message, LogLevel level = LogLevel.Info)
{
if (level >= LogLevelThreshold)
{
Console.WriteLine($"{level}: {message}");
}
}
}
在使用该日志记录器时,可以直接调用静态方法Log
来记录日志信息。如果指定的日志级别低于阈值,则不会输出任何信息。默认情况下,阈值是LogLevel.Info
:
Logger.Log("This is an informational message");
Logger.Log("This is a warning message", Logger.LogLevel.Warning);
在上述示例中,第一条日志信息会被输出,而第二条则不会输出,因为指定的日志级别是LogLevel.Warning
,而阈值是LogLevel.Info
,因此不符合条件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#静态static的用法实例分析 - Python技术站