C#构造函数与析构函数--C#基础
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#基础的更多相关文章
- C++基础学习9:构造函数和析构函数
1. 构造函数用来对类对象进行初始化,它完成对内存空间的申请.赋初值等工作. 2. 析构函数主要是用来做清理工作的. 补充:函数名或变量名前面有"::"但是没有类名,说明这是 ...
- .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]
构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用: ...
- C++语言基础(4)-构造函数和析构函数
一.构造函数 类似于java,C++中也有构造函数的概念,相关用法如下: 1.1 构造函数的定义 #include <iostream> using namespace std; clas ...
- C++基础-4-封装(构造函数与析构函数,深拷贝与浅拷贝,静态成员,this,友元,const修饰成员函数)
4. 封装 4.1.1 封装的意义 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 con ...
- 类string的构造函数、拷贝构造函数和析构函数
原文:http://www.cnblogs.com/Laokong-ServiceStation/archive/2011/04/19/2020402.html 类string的构造函数.拷贝构造 ...
- C++的构造函数和析构函数
1.构造函数和析构函数为什么没有返回值? 构造函数和析构函数是两个非常特殊的函数:它们没有返回值.这与返回值为void的函数显然不同,后者虽然也不返回任何值,但还可以让它做点别的事情,而构造函数和析构 ...
- 你好,C++(33)对象生死两茫茫 6.2.3 一个对象的生与死:构造函数和析构函数
6.2.2 使用类创建对象 完成某个类的声明并且定义其成员函数之后,这个类就可以使用了.一个定义完成的类就相当于一种新的数据类型,我们可以用它来定义变量,也就是创建这个类所描述的对象,表示现实世界中 ...
- C++学习之路—继承与派生(二):派生类的构造函数与析构函数
(根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 由于基类的构造函数和析构函数是不能被继承的,所以 ...
- 第十六周oj刷题——Problem E: B 构造函数和析构函数
Description 在建立类对象时系统自己主动该类的构造函数完毕对象的初始化工作, 当类对象生命周期结束时,系统在释放对象空间之前自己主动调用析构函数. 此题要求: 依据主程序(main函数)和程 ...
随机推荐
- Linux内存机制以及手动释放swap和内存
今天我们来谈谈Linux的内存机制. 首先我们理一下概念 一.什么是linux的内存机制? 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成, ...
- Flask 开发| Flaskr 开发内容总结
Flaskr 开发说明 官方文档 http://flask.pocoo.org/docs/0.12/tutorial/ 演示网站 http://flaskr.it592.com/ 涉及到的内容: 连接 ...
- web攻击
一.XSS(跨站脚本攻击) 最常见和基本的攻击WEB网站的方法.攻击者在网页上发布包含攻击性代码的数据.当浏览者看到此网页时,特定的脚本就会以浏览者用户的身份和权限来执行.通过XSS可以比较容易地修改 ...
- 【SSH框架】之Hibernate系列一
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Hibernate框架概述 (1).什么是HibernateHibernate是一个开放源代 ...
- ACE_TEST1.obj : error LNK2019: 无法解析的外部符号
ACE_TEST1.obj : error LNK2019: 无法解析的外部符号 "int __cdecl ace_main_i(int,char * * const)" (?ac ...
- LeetCode - 520. Detect Capital
Given a word, you need to judge whether the usage of capitals in it is right or not. We define the u ...
- kindeditor编辑器修改文本后保存时发现获取到的内容还是修改前的文本内容
定义kindeditor的时候要加上一下几个属性设置: KindEditor.ready(function(K) { var editor = K.create("textarea[name ...
- 二、Item Pipeline和Spider-----基于scrapy取校花网的信息
Item Pipeline 当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item. 每个Item Pipeline ...
- web项目中js加载慢问题解决思路
最近使用Echarts地图(版本为echarts2,echarts3目前无法下载地图版). 问题描述:之前使用require形式加载,地图首次加载显示要6-7秒,难以接受. js配置代码如下: < ...
- java网络编程(4)——udp实现聊天
UDP可以实现在线聊天功能,我这里就是简单模拟一下: 发送端: package com.seven.udp; import java.io.BufferedReader; import java.io ...