绝对干货,总结了下C#面向对象的干货内容以及我几年来的使用心得,分享出来

先明确几个简单概念作为开胃菜:

1、命名空间

namespace BackStageManagement.Services

关键字用于声明包含一组相关对象的作用域。 可以使用命名空间来组织代码元素并创建全局唯一类型。命名空间下可以有很多类!

定义命名空间: namespace 空间名称{ 类 }

引入命名空间: using 空间名称

2、构造函数

构造函数分类

  2.1.什么是构造方法?

首先它是一个方法,然后它具有“构造”的作用,所有称之为构造方法。

简单点说,构造方法可以对实例化出来的对象进行初始化。

方便实例化化之后的初始化操作。

  2.2 构造方法的语法要求

public 类名()

{

构造函数代码;

}

①构造方法要用 public 修饰,不能用 private 修饰;

②构造方法没有返回值, 且连 void 也不能写!!;

③构造方法的方法名字必须跟类名一样;

④构造方法是可以有重载的。

构造方法什么时候被调用?

当我们使用 new 关键字实例化一个对象的时候, 会首先执行构造方法。

 public Person(string name, int age, Gender gender, string address)

        {

            this.name = name;

            this.age = age;

            this.gender = gender;

            this.address = address;

        }

  2.3 this 关键字

this 代表当前类的对象。

  2.4.注意事项

当我们的类中不写构造方法的时候,在代码编译后,系统会自动给它添加一个空

构造方法,如果我们写了一个构造方法,默认的“ 空构造方法”就不会存在。

这是因为我们手动谢了一个传参的构造方法,所以空的构造方法没有默认添加。

所以使用构造方法的话,如果希望可以默认初始化,需要自己加一个

public Person()

{

}

  2.5.C#静态构造函数

  静态构造函数是C#的一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。

class SimpleClass
{
// Static constructor
static SimpleClass()
{
//
}
}

在使用静态构造函数的时候应该注意几点:

  1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。

  2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。

  3、一个类只能有一个静态构造函数。

  4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。

  5、最多只运行一次。

  6、静态构造函数不可以被继承。

  7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。

3、属性的get和set

get: 当通过属性名取值的时候, 会自动调用 get 中的代码;

set: 当通过属性名给字段赋值的时候, 会自动调用 set 中的代码;

value: 也是系统关键字, 代表赋给属性的值;

get 和 set 本质上就是两个函数。

        private int age;
public int Age
{
get { return age; } //get:取值.
set
{
if(value > || value < )
{
age = ;
}
else {
age = value;
}
} //set:赋值.
}

4、静态方法与非静态方法

a、静态方法的调用

类.静态方法名([参数列表])

非静态方法的调用

类 对象 = new 类的构造函数([参数列表])

对象.非静态方法名([参数列表])

静态方法是属于类的,而非静态方法是属于对象的;

Class1 test = new Class1();
test.HelloFJT();//调用非静态类的非静态方法
Class1.HelloJT();//调用非静态类的静态方法

b、内存的初始化

静态成员是在第一次使用时进行初始化。非静态的成员是在创建对象的时候。

静态构造函数只能被执行一次;非静态的构造函数可以根据需要进行多次使用。

c、内存中存储

静态的只有一块全局内存空间,非静态的可以有多块内存空间(副本)

d、释放

静态的一旦创建则在全局区一直存放,直到应用程序结束。非静态的则是由new关键字在堆中创建的。可以有多个副本。由GC进行释放。

4.2、都有哪些静态的东西

方法、字段、属性、事件、构造函数、类

不能使用静态关键字的

常量、索引器、析构函数

4.3、静态构造函数

非静态类中可以包含静态成员。但是,静态类中不能包含任何非静态成员。静态构造函数不能带有任何参数,而非静态构造函数可以有多种参数列表

4.4、使用场合

a、需要保存全局都有效的数据, 如:当前已登录用户信息、系统配置信息、系统设置

b、因为效率相对更高,所以需要快速访问的

c、使用频率非常高的

注意:不要过多的滥用Static

面向对象开发有三大特性(特点 / 特征) : 封装, 继承, 多态。我们会在下个篇章里真正的去讨论这几个特征。

C#面向对象(一):明确几个简单的概念作为开胃菜的更多相关文章

  1. 前端学PHP之面向对象系列第六篇——简单图形面积计算器实现

    前面的话 本文用面向对象的技术来实现一个简单的图形面积计算器 图形类 //rect.class.php <?php abstract class Shape{ public $name; abs ...

  2. Java面向对象-方法的定义及简单使用

    Java面向对象之方法 方法是对象的一部分,也称为行为: 先来一个简单实例: package com.java1234.chap03.sec03; public class Person { void ...

  3. 【Python】面向对象:类与继承简单示例

    Python 面向对象 Python 是一门面向对象的设计语言,与此对应的就是面向过程编程与函数式编程 面向对象的一个优点就是更好的增强代码的重用性. 面向过程编程可以简单的理解为:重点在步骤,将一个 ...

  4. PHP面向对象的程序设计一些简单的概念

    一.面向对象的概述    数组和对象,都属于PHP中的复合类型(一个变量可以存储多个单元) 对象比数组更强大,不仅可以存储多个数据,还可以将函数存在对象中 对象的三大特性:封装,继承,多态 面向对象编 ...

  5. JavaScript高级 面向对象(5)--最简单的继承方式,混入mix

    说明(2017.3.30): 1. 最简单的继承方式,混入mix <!DOCTYPE html> <html lang="en"> <head> ...

  6. 使用C#面向对象实现简易计算器(简单工厂模式)

    操作流程: 1. 新建Operation类 2. 新建OperationAdd类,并继承Operation类 3. 新建OperationSub类,并继承Operation类 4. 新建Operati ...

  7. <二>面向对象分析之几个关键的概念

    一:建模        --->建模,是指通过对[客观事物]建立一种抽象的方法用以表征事物并获得对事物本身的理解.同时把这种理解概念化,将这些逻辑概念组织起来,构成一种对所观察对象的内部结构和工 ...

  8. JavaSE基础知识(5)—面向对象(5.1类和对象概念、创建及内存分配)

    一.类和对象的相关概念 1.面向对象和面向过程的理解 面向对象和面向过程都属于解决问题的思考方式.面向过程:以执行者的角度思考问题,侧重于“怎么做”,比较适合解决小型项目面向对象:以指挥者的角度思考问 ...

  9. java面向对象编程——第八章 类的高级概念

    8.1访问修饰符: public:该类或非该类均可访问: private: 只有该类可以访问: protected:该类及其子类的成员可以访问,同一个包中的类也可以访问: 默认:相同数据包中的类可以访 ...

随机推荐

  1. Java技术路线

    1.计算机基础: 1.1数据机构基础: 主要学习: 1.向量,链表,栈,队列和堆,词典.熟悉 2.树,二叉搜索树.熟悉 3.图,有向图,无向图,基本概念 4.二叉搜索A,B,C类熟练,9大排序熟悉. ...

  2. Django-Ajax进阶

    一.Ajax上传文件 1.form表单上传文件 文件和其他的数据类型不一样,是一个二进制的形式 Form上传文件的时候切记要加上:enctype="multipart/form-data&q ...

  3. samtools使用过程中出现的问题

    1.EOP marker is absent 在使用samtools index时出现 EOF是指the end of file,即samtools认为你的bam文件是不完整的. 如果把view参数的 ...

  4. INSPIRED启示录 读书笔记 - 第7章 管理产品经理

    产品总监的关键职责 1.组建优秀的产品经理团队 如果产品经理不称职,只能退而求其次,请其他团队成员(比如主程序员)越俎代庖 新产品经理必须经过约三个月刻苦学习才能开始管理产品,管理者应该为新人创造学习 ...

  5. mongodb index 的background 及集群的索引建立

    在数据库建立索引时,默认时"foreground" 也就是前台建立索引,但是,当你的数据库数据量很大时,在建立索引的时会读取数据文件,大量的文件读写会阻止其他的操作,此时在建立索引 ...

  6. 算法总结之 数组的partition调整

    给定一个有序数组arr, 调整arr使得这个数组的左半部分没有重复元素且升序,而且不用保证右边是否有序 分区就ok了 u区是 无重复且升序的  u是这个区域的最后位置,初始u=0 i做从左到右的遍历, ...

  7. shell 计算文件交并差

    交集 $ sort a b | uniq -d 并集 $ sort a b | uniq 差集a-b $ sort a b b | uniq -u 文件乱序 cat tmp.txt | awk 'BE ...

  8. 用简单的反射优化代码(动态web项目)

    在动态web项目中,没有使用框架时,只是简单的jsp访问servlet实现增删改查, 无论是哪个方法都需要经过Servlet中的doGet()方法或doPost()方法,我们可以在链接中附带参数进行区 ...

  9. MySQL数据库的安装以及配置过程

    首先,下载 MySQL 数据库的安装包:mysql-5.7.17.msi.(百度一下自己下吧) 然后点击这里,啊哈哈哈哈哈哈哈. ----------------------------------- ...

  10. hdoj1006--Tick and Tick

    Problem Description The three hands of the clock are rotating every second and meeting each other ma ...