1.构造函数

1)构造函数没有返回值,也不能写void,必须是public 修饰符

2)构造函数和类名相同

3)构造函数也是可以重载的

public Clerk(string name,Gender gender,int age,string deparment)
{
this.Name = name;
this.Gender = gender;
this.Age = age;
this.Department = deparment;
}
public Clerk(string name,Gender gender,int age) {
this.Name = name;
this.Gender = gender;
this.Age = age;
}
//构造函数也是可以重载的

5)类当中会有一个默认的无参数构造函数,当写新的的构造函数之后,不管是有参数还是没有,那个默认的构造函数都会被覆盖掉

Program.cs(Add)

Clerk c3=new Clerk();//以这种方式去实例化类时,就需要把无参函数补回

Clerk.cs:(Add)

public Clerk()
{
}

6)关于new关键字

在内存中开辟空间
在开辟空间中创建对象
对对象进行初始化,将各个属性进行赋值

7)构造函数举例:

Program.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 构造函数析构函数
{
class Program
{
static void Main(string[] args)
{
//不会有c1._name只会有c1.
Clerk c1=new Clerk("张三",Gender.男,23,"人力资源");
c1.Write();

Clerk c2= new Clerk("李四",Gender.男,30);
c2.Write2();

Console.ReadKey();
}
}
}

Clerk.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 构造函数析构函数
{
public enum Gender
{
男,女
}
class Clerk
{
private string _name;
public string Name
{
get{return _name;}
set{_name = value;}
}
private Gender _gender;
public Gender Gender
{
get { return _gender; }
set { _gender = value; }
}
private string _department;
public string Department
{
get { return _department; }
set { _department = value; }
}
private int age;//默认是0
public int Age
{
get { return age; }
set { age = value; }
}
public void Write() {
Console.WriteLine("我是{0},{1},{2}岁了,在{3}任职",this.Name,this.Gender,this.Age,this.Department);
}

public void Write2()
{
Console.WriteLine("我是{0},{1},{2}岁了", this.Name, this.Gender, this.Age);
}

public Clerk(string name,Gender gender,int age,string deparment)
{
this.Name = name;
this.Gender = gender;
this.Age = age;
this.Department = deparment;
}

public Clerk(string name,Gender gender,int age) {
this.Name = name;
this.Gender = gender;
this.Age = age;
}

}
}

2.析构函数

1)析构函数是实现销毁一个类的实例的方法成员

2)析构函数不能有参数、不能有任何修饰符而且不能被调用

3)与构造函数写法同,但在前面加“~”,也没有public

4)如果系统中没有指定析构函数,那么编译器由GC(Garbage Collection垃圾回收)来决定什么时候进行释放资源如果想立即执行回收可以在程序上加上,在使用完当前类时会被调用

~Clerk() {
Console.WriteLine("我是析构函数");
}

C#构造函数与析构函数--C#基础的更多相关文章

  1. C++基础学习9:构造函数和析构函数

    1.  构造函数用来对类对象进行初始化,它完成对内存空间的申请.赋初值等工作.  2.  析构函数主要是用来做清理工作的. 补充:函数名或变量名前面有"::"但是没有类名,说明这是 ...

  2. .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]

    构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用: ...

  3. C++语言基础(4)-构造函数和析构函数

    一.构造函数 类似于java,C++中也有构造函数的概念,相关用法如下: 1.1 构造函数的定义 #include <iostream> using namespace std; clas ...

  4. C++基础-4-封装(构造函数与析构函数,深拷贝与浅拷贝,静态成员,this,友元,const修饰成员函数)

    4. 封装 4.1.1 封装的意义 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 con ...

  5. 类string的构造函数、拷贝构造函数和析构函数

    原文:http://www.cnblogs.com/Laokong-ServiceStation/archive/2011/04/19/2020402.html   类string的构造函数.拷贝构造 ...

  6. C++的构造函数和析构函数

    1.构造函数和析构函数为什么没有返回值? 构造函数和析构函数是两个非常特殊的函数:它们没有返回值.这与返回值为void的函数显然不同,后者虽然也不返回任何值,但还可以让它做点别的事情,而构造函数和析构 ...

  7. 你好,C++(33)对象生死两茫茫 6.2.3 一个对象的生与死:构造函数和析构函数

    6.2.2  使用类创建对象 完成某个类的声明并且定义其成员函数之后,这个类就可以使用了.一个定义完成的类就相当于一种新的数据类型,我们可以用它来定义变量,也就是创建这个类所描述的对象,表示现实世界中 ...

  8. C++学习之路—继承与派生(二):派生类的构造函数与析构函数

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 由于基类的构造函数和析构函数是不能被继承的,所以 ...

  9. 第十六周oj刷题——Problem E: B 构造函数和析构函数

    Description 在建立类对象时系统自己主动该类的构造函数完毕对象的初始化工作, 当类对象生命周期结束时,系统在释放对象空间之前自己主动调用析构函数. 此题要求: 依据主程序(main函数)和程 ...

随机推荐

  1. LeetCode - 307. Range Sum Query - Mutable

    Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...

  2. uboot之位置无关代码解析

    在之前的话 新年过去了,那么久没有好好学习,感觉好颓废,现在就uboot的一些基础问题做一些笔记,顺便分享给大家,不过由于见识有限,如果有不足之处请多多指教. 位置无关?什么意思?我们先了解一些基础知 ...

  3. Maven中避开测试环节

    两种方法 修改pom文件 添加<skipTests>true</skipTests>标签 <plugin> <groupId>org.apache.ma ...

  4. 为何要部署IPV6

    ·IPv4的局限性:   1.地址空间的局限性:IP地址空间的危机由来已久,并正是升级到IPv6的主要动力.   2.安全性:IPv4在网络层没有安全性可言,安全性一直被认为是由网络层以上的层负责. ...

  5. 【Unity3D技术文档翻译】第1.6篇 使用 AssetBundle Manager

    上一章:[Unity3D技术文档翻译]第1.5篇 使用 AssetBundles 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Develo ...

  6. mysql5.7中解决中文乱码的问题

    在使用mysql5.7时,会发现通过web端向数据库中写入中文后会出现乱码,但是在数据库中直接操作SQL语句插入数据后中文就显示正常,这个问题怎么解决呢?此处不对mysql的数据编码过程和原理进行讲解 ...

  7. Spring实现无需注解实现自动注入

    xml配置 过程:设置自动装配的包-->使用include-filter过滤type选择为regex为正则表达式-->expression是表达是式也就是限制条件 <?xml ver ...

  8. Java——正则表达式

    题目: java中提供了对正则表达式的支持. 有的时候,恰当地使用正则,可以让我们的工作事半功倍! 如下代码用来检验一个四则运算式中数据项的数目,请填写划线部分缺少的代码. 注意:只填写缺少代码,不要 ...

  9. C#中ASCII码学习心得

    1.利用调用ASCIIEncoding类来实现各种转换.如简单个ACS码和int转换. ***利用(int)ASCIIEncoding类对象.GetBytes(character)[0]得到整数: p ...

  10. 求第k小的数 O(n)复杂度

    思路:利用快速排序的思想,把数组递归划分成两部分.设划分为x,数组左边是小于等于x,右边大于x.关键在于寻找一个最优的划分,经过 Blum . Floyd . Pratt . Rivest . Tar ...