属性、方法和字段等成员是对象实例所特有的,即改变一个对象实例的这些成员不影响其他的实例中的这些成员。除此之外,还有一种静态成员(也称为共享成员),例如静态方法、静态属性或静态字段。静态成员可以在类的实例之间共享,所以它们可以看作是类的全局对象。静态属性和静态字段可以访问独立于任何对象实例的数据,静态方法可以执行与对象类型相关、但不是特定实例的命令,在使用静态成员时,甚至不需要实例化类型的对象。例如,前画使用的Console.WriteLine()方法就是静态的。
实例成员与静态成员的访问规则:
·位于同一类的实例方法可直接相互调用。
·实例字段和静态字段可以被同一类的所有实例方法直接访问。
·静态方法只能直接访问静态字段。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace leiyuduixiang { class Program { static void Main(string[] args) { Class1.b = 3; Class1 cc = new Class1(); int c = cc.jiafa(); cc.a = 5; Console.WriteLine(c); Class1.b = 5; int d = new Class1().jiafa(); Console.WriteLine(d); Console.ReadLine(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace leiyuduixiang { class Class1 { public int a; //普通变量 public static int b;//静态变量 public int jiafa() { return a + b; } public static int jianfa()//静态方法只能直接访问静态字段 { return new Class1().a - b;//要想访问实例数据,要在静态方法中创建对象 } } }
所有的对象都有一个默认的构造函数,该函数没有参数,与类本身有相同的名称。一个类定义可以包含几个构造函数,它们有不同的签名,代码可以使用这些签名实例化对象。带有参数的构造函数通常用于给存储在对象中的数据提供初始值。
在C#中,构造函数用new关键字来调用。例如,可以用下面的方式实例化一个CupOfCoffee对象:
CupOfCoffee myCup = new CupOfCoffee();
对象还可以用非默认的构造函数来创建。与默认的构造函数一样,非默认的构造函数与类同名,但它们还带有参数,例如:
CupOfCoffee myCup = new CupOfCoffee(“Blue Mountain”);
构造函数与字段、属性和方法一样,可以是公共或私有的。在类外部的代码不能使用私有构造函数实例化对象,而必须使用公共构造函数。—些类没有公共的构造函数,外部的代码就不可能实例化它们。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace gouzaohanshu { class Program { static void Main(string[] args) { //每个类都至少有一个构造函数,名字与类名同名 //凡是造对象,都是通过调用构造函数造出来的 //一般用于给成员赋初始值 //用于跨类之间数据传输 Class1 c = new Class1("lisi");//通过构造函数来构造初始化对象 Console.WriteLine(c.name); Class1 d = new Class1(); d.name = "wangwu"; Console.WriteLine(d.name); Console.ReadLine(); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace gouzaohanshu { class Class1 { public Class1(string values) //方法重载,参数类型不同 { name = values; } public Class1() { } public string name; } }
命名空间与类库
命名空间可以看成是类的“容器”,它可以包含多个类,一般引用方法就是在源代码开头使用using语句。命名空间可以嵌套,
声明方法:最外围命名空间 内层命名空间.类名 自定义名 = new 最外围命名空间 内层命名空间.类名();
类库相当于一个程序集——为了提高软件开发的效率,人们在整个软件开发过程中大量应用了软件工程的模块化原则,重用已有模块,再开发部分新模块,最后将新旧模块组装起来。
类库的建立方法:
(1)在解决方案上单击右键,按图示点击"新建项目……"
(2)选择类库,给类库一个名字,选择好保存位置,点击确定
(3)建立成功后在类库中写上所需要的方法,然后进行引用——1、在引用中添加类库 2、在代码中写上using语句。
区分类库项目、程序集、命名空间这三者的方法:
(1)每个类库项目编译之后,将会生成一个程序集
(2)类库项目中可以拥有多个类,这些类可属于不同的命名空间
(3)不同的类库项目可以定义相同的命名空间
总的来说,“命名空间”是一个逻辑上的概念,它的物理载体是“程序集”,具体体现为“DLL”(或EXE)文件。
在visual studio中,可以通过创建“类库”类型的项目生成程序集。
一个程序集可以有多个命名空间,而一个命名空间也可以分布于多个程序集。