静态成员

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

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

c#面向对象基础 静态成员、构造函数、命名空间与类库的更多相关文章

  1. 4、面向对象以及winform的简单运用(继承与多态、命名空间与类库)

    继承 继承既子类与父类之间的关系.子类是父类的一种特例,子类拥有父类所没有的功能. 子类与父类之间的相互赋值——例: Parent p; Son c = new Son(); p = c; //正确, ...

  2. C#面向对象基础01

    面向对象不是取代面向过程的类.对象."人"是类,"张三"是人这个类的对象.类是抽象的,对象是具体的.按钮就是类,某个按钮就是对象.对象可以叫做类的实例.类就像i ...

  3. JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)

    函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) {             return i1 + i2;//如果不写return返回 ...

  4. php面向对象基础知识点总结

    下面是一些PHP面向对象基础知识的摘录,摘录内容来自PHP5.1手册. 1.类的变量成员叫做“属性”,或者叫“字段”.“特征”,在本文档统一称为“属性”. 2.属性中的变量可以初始化,但是初始化的值必 ...

  5. JavaSE学习笔记(2)---面向对象基础

    JavaSE学习笔记(2)---面向对象基础 1.面向对象具有三大特征:封装性.继承性和多态性,而面向过程没有继承性和多态性,并且面向过程的封装只是封装功能,而面向对象可以封装数据和功能.所以面向对象 ...

  6. 了解JavaScript 面向对象基础 & 原型与对象

    面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...

  7. MYSQL、PHP基础、面向对象基础简单复习总结

    一.MYSQL         1.配置MySql                 第一步安装服务器(apache).                 第二部安装MySql界面程序         2 ...

  8. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  9. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

随机推荐

  1. Linux2.6 内核的 Initrd 机制解析

    文章来自:www.ibm.com/developerworks/cn/linux/l-k26initrd/ 1.什么是 Initrd initrd 的英文含义是 boot loader initial ...

  2. LoadRunner参数化之数据取值和更新方式

    其实看LR已经很久了,每次看到参数化的取值更新时,都没有看透,了解个大概就为止了,也确实挺搞脑子的. 现在理解下来 分成2部分 取值方式  Select next row 如何从数据列表中取值 Seq ...

  3. Uva 524 Prime Ring

    如果用全排列生成之后,在判断是否是素数环是会超时的,应该用回溯. 回溯的时候  首先要注意 递归边界 ,结束的时候别忘记判断最后一个和第一个元素能否成立  还有要记得vis的使用和递归之后的清理. # ...

  4. 使用Spring发送邮件

    http://www.oschina.net/code/snippet_253813_36503

  5. http://blog.csdn.net/z69183787/article/details/37819831

    http://blog.csdn.net/z69183787/article/details/37819831

  6. ural 1255. Graveyard of the Cosa Nostra

    1255. Graveyard of the Cosa Nostra Time limit: 1.0 secondMemory limit: 64 MB There is a custom among ...

  7. iOS学习05C语言函数

    本次主要是学习和理解函数,函数树状图如下: 1.函数的声明和定义 函数定义的四要素分别为: 返回值类型 :函数的结果值类型,函数不能返回数组. 指定返回类型是void类型说明函数没有返回值. 函数名 ...

  8. [转]七天学会NodeJS

    转:http://nqdeng.github.io/7-days-nodejs/ NodeJS基础 什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS, ...

  9. 深度神经网络结构以及Pre-Training的理解

    Logistic回归.传统多层神经网络 1.1 线性回归.线性神经网络.Logistic/Softmax回归 线性回归是用于数据拟合的常规手段,其任务是优化目标函数:$h(\theta )=\thet ...

  10. 原生js添加和删除类

    原生js添加和删除类: this.className +=" "; this.className = this.className.replace(" 原来的类" ...