C# 中 为什么 要把一个 类 定义成 Static了? RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 补充一点点静态类只允许包含静态成员,静态构造函数,静态方法,属性,事件,且不可被继承,相当于加了sealed关键字 在C#中很少把一个class定义成staic的,楼上几位的回答可能没看清题目。C#中的 static class 常用于定义扩展方法,如public static XXXXExtensions{ public static string XXXXMethod( this string XXX , string XX ){ ... }}理解 static 要从 概念 和 应用 两个角度来看。从面向对象的角度来看, 对象的实例表示的是 个体, 而static的属性和方法则表示 全体所共有的方法和属性 , 如“会员张三”、“会员李四”是“会员”的两个个体, 昵称、等级是他们各自不同的属性,而 会员总数、注册新会员 则是 全体会员所共享的属性和方法。 双比如 “圆”这个class, 半径、面积、周长是 个体的属性,而圆周率PI则是共性。从应用的角度来看,楼上的都已经说了,本质就是为了节省内存,在内存中只有一个引用。在C#中,如果不是用于定义扩展方法,用 static 修饰 class 的很少见,如果修饰了,则只能是// 不是 publicstatic class ClassA{ // 只能定义 static 方法 public static string MethodXXX(..){ ... } // 构造函数也是 static static AClass(){ } // 属性也只能是 static public static string PropertyA{get;set;}}静态类http://msdn.microsoft.com/zh-cn/library/79b3xss3(v=VS.80).aspx--------------------------------------------------------------------------------类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。静态类的主要功能如下:•它们仅包含静态成员。•它们不能被实例化。•它们是密封的。•它们不能包含实例构造函数(C# 编程指南)。因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。 工具类...MSDN说的很清楚了,“例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。”...例如,System.Math类... 简单的说,本身不支持用static,不用说那么复杂。用了static 的话传值起来比较简单。可是static在内存中占有一定的空间,做系统的话安全性不是很好。 求高手写如下代吗 TreeView 4层遍历显示 winform软件版本更新问题,如何在卸载旧版程序的时候保留配置文件和数据文件 有关Response.Redirect的问题 使用winhttp 组件获取某页面的html文本,中文出现乱码. C# WinForm中动态显示时间的问题---诚邀各位讨论!! 100分求解决方案!! 本人做的C/S程序怎么才能让多个人同时使用? 求教根据两点经纬度得到球面距离算法 关于.NET4.5的问题 数据类型转换的问题 ContextMenuStrip中加入TrackBar
静态类只允许包含静态成员,静态构造函数,静态方法,属性,事件,且不可被继承,相当于加了sealed关键字
public static string XXXXMethod( this string XXX , string XX ){
...
}
}
理解 static 要从 概念 和 应用 两个角度来看。
从面向对象的角度来看, 对象的实例表示的是 个体, 而static的属性和方法则表示 全体所共有的方法和属性 , 如“会员张三”、“会员李四”是“会员”的两个个体, 昵称、等级是他们各自不同的属性,而 会员总数、注册新会员 则是 全体会员所共享的属性和方法。 双比如 “圆”这个class, 半径、面积、周长是 个体的属性,而圆周率PI则是共性。从应用的角度来看,楼上的都已经说了,本质就是为了节省内存,在内存中只有一个引用。
在C#中,如果不是用于定义扩展方法,用 static 修饰 class 的很少见,
如果修饰了,则只能是// 不是 public
static class ClassA{
// 只能定义 static 方法
public static string MethodXXX(..){
...
}
// 构造函数也是 static
static AClass(){ }
// 属性也只能是 static
public static string PropertyA{get;set;}
}
静态类
http://msdn.microsoft.com/zh-cn/library/79b3xss3(v=VS.80).aspx
--------------------------------------------------------------------------------类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。静态类的主要功能如下:•它们仅包含静态成员。•它们不能被实例化。•它们是密封的。•它们不能包含实例构造函数(C# 编程指南)。因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化。使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。