标签:http io 使用 ar 数据 div sp on c
静态类是不能实例化的,我们直接使用它的属性与方法,静态类最大的特点就是共享。
探究
只要 StaticTestClass 没有被重新编译,即使 P1.aspx、P2.aspx 被重新编译,每当调用 StaticTestClass.Add(),n 都会在前一个次的基础上加 1。
原则
静态构造函数
类与结构的示例比较
结构示例
类示例
调用过程
从上面的例子中我们可以看到,类的声明和结构的声明非常类似,只是限定符后面是 struct 还是 class 的区别,而且使用时,定义新的结构和定义新的类的方法也非常类似。那么类和结构的具体区别是什么呢?
类与结构的差别
值类型与引用类型
结构
结构是值类型,值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型。
类
类是引用类型,引用类型在堆上分配地址。
堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑。
因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用。
说明:
继承性
结构
不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用 sealed 声明,可是结构是隐式的 sealed。
类
完全可扩展的,除非显示的声明 sealed,否则类可以继承其他类和接口,自身也能被继承。
说明:
例如:结构实现接口
内部结构
结构
类
如何选择结构还是类
讨论了结构与类的相同之处和差别之后,下面讨论如何选择使用结构还是类:
----
网友在 CSDN 上的回答:
结构可以看作是轻量级的类,在性能上要好一点。
相同之处:
不同之处:
.....
按照MSDN上的意思,实际上适合用 struct 的场合很小,结构使用指南:
在 C# 中结构与类的区别一文中,已经介绍了 struct 的相关知识,本文就结合应用作些强调、补充、修正。
关于字段
不能在声明字段时初始化它,除非字段被标明为 const 或 static。
关于构造函数
构造函数必须有参数。
构造函数中必须为所有的字段赋值。
说明
不允许在结构中显式地声明无参数的构造函数,若要显示地声明则必须是有参数的。但在使用 new 实例化时可以使用无参数的构造函数,也可以使用有参数的构造函数,说明存在着一个看不到的、默认的无参数构造函数,《C# 中结构与类的区别》一文中说结构“没有默认的构造函数”,这种说法有误。
要不要使用 new
如果使用结构中的属性、方法,则必须使用 new,否则可以不使用 new。
嵌套类型
在类或结构内部定义的类型称为嵌套类型。例如:
class Container { class Nested { Nested() { } } }
不管外部类型是类还是结构,嵌套类型均默认为 private,但是可以设置为 public、protected internal、protected、internal 或 private。在上面的示例中,Nested 对外部类型是不可访问的,但可以设置为 public,如下所示:
class Container { public class Nested { Nested() { } } }
嵌套类型(或内部类型)可访问包含类型(或外部类型)。若要访问包含类型,请将其作为构造函数传递给嵌套类型。例如:
public class Container { public class Nested { private Container m_parent; public Nested() { } public Nested(Container parent) { m_parent = parent; } } }
嵌套类型可访问包含类型的私有成员和受保护的成员(包括所有继承的私有成员或受保护的成员)。
在前面的声明中,类 Nested 的完整名称为 Container.Nested。这是用来创建嵌套类的新实例的名称,如下所示:
Container.Nested nest = new Container.Nested();
标签:http io 使用 ar 数据 div sp on c
原文地址:http://www.cnblogs.com/lschenblog/p/3955730.html