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函数)和程 ...
随机推荐
- AJAX入门第一篇就够了
什么是Ajax Ajax(Asynchronous JavaScript and XML) 异步JavaScript和XML Ajax实际上是下面这几种技术的融合: (1)XHTML和CSS的基于标准 ...
- DaemonSet 案例分析 - 每天5分钟玩转 Docker 容器技术(130)
本节详细分析两个 k8s 自己的 DaemonSet:kube-flannel-ds 和 kube-proxy . kube-flannel-ds 下面我们通过分析 kube-flannel-ds 来 ...
- 小甲鱼OD学习第12讲
这次我们的任务是破解这个需要特定的注册码的软件,如下图 我们从字符串入手,输入register,搜索 我们点击 查找下一个,看看有什么有用的字符串,如下图 然后,在下方,我们发现了 Regis ...
- 树莓派3B上部署运行.net core 2程序
针对Linxu arm处理器如何部署.net core 2的资料很少,网上找到几篇但都写得不够详细,按照他们教程来撞墙了,折磨了几天终于部署成功了,先上一张运行成功的图 1.windows系统中,在项 ...
- PHP实现WebService的简单示例和实现步骤
首先我创建的文件有: api.php api的接口类文件 api.wsdl 我创建产生的最后要调用的接口文件 cometrue.php 注册service api类内容的所有内容的执行文件 creat ...
- object类的equals方法简介 & String类重写equals方法
object类中equals方法源码如下所示 public boolean equals(Object obj) { return this == obj; } Object中的equals方法是直接 ...
- mongodb的TTL索引介绍(超时索引)
TTL索引是mongodb新支持的用于延时自动删除记录的一种索引.它仅包含一个字段,该字段值需要是Date()类型,并且不支持复合索引.可以指定某条记录在延时固定时间后自动删除.数据自动超时删除主要用 ...
- bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 559 Solved: 325[Submit][Sta ...
- [工具]Microsoft To-Do,简约还是简陋?
1. 简介 微软收购奇妙清单后,由奇妙清单的原班人马打造了一个全新的待办事项应用,就叫"To-Do"(简单粗暴,好像新浪微博直接就叫"微博"的感觉).这个应该刚 ...
- spring 完成multipart数据上传
spring中多媒体文件的上传,通过配置 MultipartResolver 实现. MultipartResolver 的实现类有两个:一.StandardServletMultipartResol ...