`
wsql
  • 浏览: 11756634 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

C#构造函数-创建对象

 
阅读更多

构造函数(constructor)用于执行类的实例的初始化。每个类都有构造函数。C#中通过new关键字创建对象的过程其实就是通过new关键字调用类的构造函数的过程。创建对象时,必须调用构造函数,如果没有定义构造函数,系统会提供一个默认的构造函数。

在访问一个类的时候,系统将最先执行构造函数中的语句,任何构造函数的执行都隐式的调用了系统提供的默认构造函数base(),可以有参数,也可以没有。有参数的时候,类在实例化的时候必须传递参数。

构造函数是类中的特殊方法,C#使用构造函数来初始化变量。创建构造函数的语法如下:

class 类名

{
<访问修饰符> 类名()

{
//构造函数主体
}

}

构造函数的定义规则:
(1)C# 语言的构造函数的名称必须与类名相同。
(2)构造函数没有返回值。它可以带参数,也可以不带参数。
(3)声明类对象时,系统自动调用构造函数。在构造函数中不要做对类的实例进行初始化以外的事情,也不能被显式地调用。
(4)构造函数可以重载,从而提供初始化类对象的不同方法;
(5)若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空。
(6)静态构造函数,用static修饰,用于初始化静态变量,一个类只允许有一个构造函数,在类实例化时加载,这时修饰符public、private失去作用。
(7)构造函数可以使用public、protected、private修饰符。一般地,构造函数总是public 类型的。private 类型的构造函数表明类不能被实例化,通常用于只含有静态成员的类。
(8)引用父类构造时用():base()方法,引用自身重载的构造使用():this(int para)。
(8)一个构造函数的返回类型是这个类的一个实例,而一个普通方法的返回类型可以是任何类型。

注意:

1、定义了一个带参构造函数后,一定要定义一个无参构造函数,这样可以避免子类调用时出错。

2、调用基类构造函数:base() 或 :base(参数列表) 调用本类其它构造函数 :this() 或 :this(参数列表)

3、只有在用base显示调用父类的构造函数时,程序才不会默认的调用不带参数的构造函数。

下面这种构造函数不接受任何参数,称为无参数构造函数。

  1. class TestClass
  2. {
  3. public TestClass(): base() {} // 由CLR提供
  4. }

下面的代码说明了构造函数的声明方式:

// 构造对象时将执行构造函数

using System;
public class Dog

public string name;
public Dog() // 声明构造函数
{
this.name = "未知";
Console.WriteLine("Dog():Dog类已被初始化。");
}

public static void Main()

{
Dog myDog = new Dog(); // 会调用构造函数
Console.WriteLine("myDog的名字为“{0}”。);
}
}

在访问一个类的时候,系统将首先执行构造函数中的语句。构造函数的功能是创建对象,使对象的状态合法化。在从构造函数返回之前,对象都是不确定的,不能用于执行任何操作;只有在构造函数执行完成之后,存放对象的内存块中才存放这一个类的实例。

说明:成员变量使用了this关键字,在这里this代表当前实例。使用this关键字编码时可以有效防止变量名输入错误。

上述代码的执行结果如下:

Dog():Dog类已被初始化。
myDog的名字为“未知”。

显然,在创建对象时执行了构造函数。

分享到:
评论

相关推荐

    C#学习笔记整理_深入剖析构造函数、析构函数

    构造函数、析构函数 构造函数: 1.若没提供任何构造函数,则系统会自动提供一个默认的...一般的构造函数都是实例构造函数,只要创建实例,就执行构造函数; 静态构造函数: 1.只能定义一个,最多运行一次,仅在第一次

    详解C#编程中构造函数的使用

    当类或结构创建时,其构造函数调用。构造函数与选件类或结构相同,并且,它们通常用于初始化新对象的数据成员。 在下面的示例中,使用一个简单的构造函数定义了名为 Taxi 的类。然后使用 new 运算符来实例化该类。在...

    C#初学练习程序

    hsttmht的博客,关于C#初级学习的源码文件。包括: 1.编写一个类,要求从控制台输入长方形的长和宽,计算面积和周长并且输出到控制台。 2.编写一个类,要求从控制台输入年份,计算输入的年份是否为闰年,闰年的判断...

    深入.NET平台和C#编程

    2 添加带参构造函数 在构造函数中给成员赋值 通过构造函数创建对象 用run方法 3 重载run 方法 给run 传递一个int类型参数speed 最高车速 输出信息 车速通过参数传递"&gt;编写控制台程序 模拟小汽车 Car 奔跑 1 编写...

    基于JavaScript自定义构造函数的详解说明

    Javascript中创建对象的语法是在new运算符的后面跟着一个函数的调用。如 代码如下: var obj = new Object(); var date = new Date();运算符new首先创建一个新的没有任何属性的对象,然后调用该函数,把新的对象...

    C#反射简单入门实例

    创建一个Assembly,反射构造函数,方法,属性信息,动态实例化类对象,调用类方法。对想简单了解反射概念的朋友有一定的帮助。

    csharp-object-to-object-literal:这是尝试从NHibernate水化的内存中的C#对象中发出C#对象文字构造函数

    这是尝试为内存中的NHibernate对象(图形)发出C#对象文字构造函数,然后可以将其粘贴到任何单元测试框架中。 这不是一般情况下的解决方案,但确实适用于我的真实数据。 随着我遇到更多的数据类型,我将对其进行...

    C#写的基本文件操作类,创建删除读写

    构造函数FileWriter()是先新建对象再用其他函数打开文件 2.FileWriter(string file_name)是对给定文件名进行操作,OpenForRead(),OpenForWrite()等函数打开,后面的操作就都一样了。 就是基本的几个功能,学习和...

    关于C#的反射机制详解

    C#反射 反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举...如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。

    C# 反射技术应用

    C# 反射技术应用  反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、...如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。

    C#基类库大全下载--苏飞版

    构造函数2.私有字段3.设置字体4.设置页面大小 5.实例化文档6.打开文档对象7.关闭打开的文档8.添加段落9.添加图片10.添加链接、点 等功能 10.ResourceManager 操作类 AppMessage app消息格式化类,返加字符串帮助类...

    C#中new的用法及与override的区别分析

    (1)new是运算符,用于创建对象和调用构造函数。如Class1=new Class1();也可以为值类型调用默认的构造函数如int a=new int();此时a=0. (2)new是修饰符,用于隐藏基类成员的继承成员。override不能隐藏积累成员的继承...

    C# FileStream文件读写详解

    FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写...构造函数具有许多不同的重载版本,最简单的构造函数仅仅带有两个参数,即文件名和FileMode枚举值。 代码如下: FileStream aFile = new

    C#中类和结构的区别 -- 示例详解

    没有默认的构造函数,但是可以添加构造函数 没有析构函数 没有 abstract 和 sealed(因为不能继承) 不能有protected 修饰符 可以不使用new 初始化 在结构中初始化实例字段是错误的 类: 有默认的构造函数 有...

    Visual C# 2010程序设计教程(教程PPT+源代码)

    5.3 构造函数与析构函数 5.3.1 构造函数 5.3.2 析构函数 5.4 本章小结 5.5 上机练习 5.6 习题 第6章 域、属性与事件 6.1 域 6.1.1 域的初始化 6.1.2 只读域与readonly关键字 6.2 属性 6.2.1 属性的声明 6.2.2 属性...

    详解C#获取特定进程CPU和内存使用率

    当有了进程对象后,可以通过进程对象名称来创建PerformanceCounter类型对象,通过设定PerformanceCounter构造函数的参数实现获取特定进程的CPU和内存使用情况。 具体实例代码如下: 首先是获取本机中所有进程对象,...

    C#实验报告四.docx

    1.理解面向对象的概念,掌握C#的定义类和创建对象的方法。 2.区分类的不同数据成员,包括常量,字段和属性的定义方法,并学会控制其可访问性。 3.掌握类的方法成员的声明与调用,理解各种参数在方法中的意义及使用。...

    C#科学计算讲义

    1.7.2 创建对象  1.7.3 方法  1.7.4 构造函数  1.7.5 析构函数与垃圾回收  1.8 运算符重载及索引器  1.8.1 运算符重载  1.8.2 索引器  1.8.3 面向对象思想在C#程序设计中的重要性  1.9 GUI编程  ...

    C#轻型数据库操作类(CSharp OleDb .Net Framework 4.8)

    创建对象:AccessControl varname = new AccessControl("这里是数据库路径支持绝对路径和相对路径"); 代码行数:578 文件大小:16289B 该库仅支持OleDb数据库控制,大型数据库请避开;请勿用于大型项目;适合初学...

    C#方法的总结详解

    所以不能被virtual、new、override、sealed和abstract修饰,若没有显示定义任何构造函数,编译器将定义一个无参的public构造函数,但若是抽象类,编译器将定义一个无参的protected的构造函数创建一个类的实例并

Global site tag (gtag.js) - Google Analytics