c#面向对象基础 静态成员、构造函数、命名空间与类库

静态成员

  属性、方法和字段等成员是对象实例所特有的,即改变一个对象实例的这些成员不影响其他的实例中的这些成员。除此之外,还有一种静态成员(也称为共享成员),例如静态方法、静态属性或静态字段。静态成员可以在类的实例之间共享,所以它们可以看作是类的全局对象。静态属性和静态字段可以访问独立于任何对象实例的数据,静态方法可以执行与对象类型相关、但不是特定实例的命令,在使用静态成员时,甚至不需要实例化类型的对象。例如,前画使用的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中,可以通过创建“类库”类型的项目生成程序集。

  一个程序集可以有多个命名空间,而一个命名空间也可以分布于多个程序集。

原文地址:https://www.cnblogs.com/jiangshuai52511/p/5067154.html