namespace study_static
{
/// <summary>
/// 通过static关键字修饰,是属于类,实例成员属于对象,在这个类第一次加载的时候,这个类下面的所有静态成员会被加载。
/// 静态成员只被创建一次,所以静态成员只有一份,实例成员有多少个对象,就有多少份。
/// 编译器不允许静态类有任何实例成员
/// </summary>
static class StaticTest
{
public static string Name;
/// <summary>
/// 1、静态类可以有静态构造函数,静态构造函数不可继承;
/// 2、静态构造函数可以用于静态类,也可用于非静态类;
/// 3、静态构造函数无访问修饰符、无参数,只有一个 static 标志;
/// 4、静态构造函数不可被直接调用,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且只执行一次。
/// </summary>
static StaticTest() {
Name = "gongyg";
}
/// <summary>
/// 为原始类型扩展方法
/// 使用this时,类必须为static
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public static string ToString2(this string param)
{
if (param == null)
{
return "";
}
return param.Trim();
}
}
}
using System;
namespace study_static
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(StaticTest.Name);//gongyg
string str = " 12 ";
Console.WriteLine(str);
Console.WriteLine(str.ToString2());
}
}
}