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中,可以通过创建“类库”类型的项目生成程序集。
一个程序集可以有多个命名空间,而一个命名空间也可以分布于多个程序集。
c#面向对象基础 静态成员、构造函数、命名空间与类库的更多相关文章
- 4、面向对象以及winform的简单运用(继承与多态、命名空间与类库)
继承 继承既子类与父类之间的关系.子类是父类的一种特例,子类拥有父类所没有的功能. 子类与父类之间的相互赋值——例: Parent p; Son c = new Son(); p = c; //正确, ...
- C#面向对象基础01
面向对象不是取代面向过程的类.对象."人"是类,"张三"是人这个类的对象.类是抽象的,对象是具体的.按钮就是类,某个按钮就是对象.对象可以叫做类的实例.类就像i ...
- JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)
函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) { return i1 + i2;//如果不写return返回 ...
- php面向对象基础知识点总结
下面是一些PHP面向对象基础知识的摘录,摘录内容来自PHP5.1手册. 1.类的变量成员叫做“属性”,或者叫“字段”.“特征”,在本文档统一称为“属性”. 2.属性中的变量可以初始化,但是初始化的值必 ...
- JavaSE学习笔记(2)---面向对象基础
JavaSE学习笔记(2)---面向对象基础 1.面向对象具有三大特征:封装性.继承性和多态性,而面向过程没有继承性和多态性,并且面向过程的封装只是封装功能,而面向对象可以封装数据和功能.所以面向对象 ...
- 了解JavaScript 面向对象基础 & 原型与对象
面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...
- MYSQL、PHP基础、面向对象基础简单复习总结
一.MYSQL 1.配置MySql 第一步安装服务器(apache). 第二部安装MySql界面程序 2 ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
随机推荐
- 生成n位随机字符串
--1.借助newid() Go --创建视图(因为在函数中无法直接使用newid()) create view vnewid as select newid() N'MacoId'; go --创建 ...
- mysql一些有用的链接
1.mysql安装:http://jingyan.baidu.com/article/f79b7cb35c0f439144023e38.html
- Liferay 6.2 改造系列之二:清理不需要的Portlet
一.特殊Portlet: 以下Portlet数据特殊用途的Portlet,去除后会出现运行错误: 1.站点模版 通过com.liferay.portal.events.AddDefaultLayout ...
- 如何创建一个Android项目
第一步: File -->New ---->Android Application Project 点击创建 第二步:接下来是几个下拉选择框. Minimum Required SDK 是 ...
- cf 710E dp
题目链接: http://codeforces.com/problemset/problem/710/E 题意:要输入n个字符'a',有两种操作,一种是输入或删除一个'a',耗时x:另一种是把当前的整 ...
- no-jquery 03 Ajax
Ajax Requests GETting var xhr = new XMLHttpRequest(); xhr.open('GET', encodeURI('myservice/username? ...
- 运用datalist标签实现用户的搜索列表
datalist是一个很强大的HTML5标签,支持一般类似于模糊查询,以前都是需要js来做的.下面是一个datalist配合js的小例子,主要是实现用户是否存在,以及添加过程中是否重复的判断. 首先是 ...
- Java在ACM中的应用
Java在ACM中的应用 —. 在java中的基本头文件(java中叫包) import java.io.*; import java.util.*; //输入Scanner import java. ...
- js点击a链接弹出alert对话框
代码 <html> <head> <meta charset="utf-8"> <meta name="generator&qu ...
- Codeforces 633C Spy Syndrome 2(DP + Trie树)
题目大概说给一个加密的字符串,加密规则是把原文转化成小写字母,然后各个单词反转,最后去掉空格.现在给几个已知的单词,还原加密的字符串. 和UVa1401一个道理.. 用dp[i]表示加密字符前i个字符 ...