`
zhangziyangup
  • 浏览: 1187467 次
文章分类
社区版块
存档分类
最新评论

C#基础知识整理:基础知识(3) 类的构造

 
阅读更多

我们定义了YSchool,YTeacher类,实例化对象时:

            YSchool shool1 = new YSchool();

            shool1.ID = 1;

            shool1.Name = "清华附中";

            YSchool school2 = new YSchool();

            school2.ID = 2;

            school2.Name = "北师大附中";

这样写对不对呢,其实在逻辑上是不正确的,因为实例化对象时,它的属性应该是和实例化一起就有的,而不是后来再加属性。在程序中表现就是,属性要有初值。
所以,在类中就要有这样一个方法,无返回类型,方法名和类名相同,有参数类表或者没有参数列表。它就是构造方法,俗称“构造器”或“构造函数”。一个类中可以有一个或多个构造函数,当然有时你没写构造函数,这并不代表这个类就没有构造函数,它依然有一个默认的构造函数的。如果使多个构造函数的话,它们各自的参数列表必须不同。
下面以YSchool为例完善这个类。

  /// <summary>
    /// YSchool类的id和name是它的固有属性,它的值应该是确定的。
    /// 实例化的同时对属性赋初值,用到构造函数。
    /// </summary>
    public class YSchool
    {
        private int id = 0;

        private string name = string.Empty;

        public int ID
        {
            get
            {
                return this.id;
            }
        }

        public string Name
        {
            get
            {
                return name;
            }
        }
        /// <summary>
        /// 没有参数的构造器称之为“默认构造器”;如果没有写一个构造器,那么
        ///系统也会提供一个默认的构造器,所以说类至少有一个构造器;
        ///当然,如果系统提供的默认构造函数,则属性初值为声明时赋的初值,如果声明
        ///未赋初值,则是“类型默认值”,比如0或者null。
        /// </summary>
        public YSchool()
        {
            this.id = 0;

            this.name = @"清华附中";
        }
        /// <summary>
        /// 带有参数列表的构造函数,
        /// 属性的值就是传入的列表的值。
        /// </summary>
        /// <param name="id"></param>
        /// <param name="name"></param>
        public  YSchool(int id, string name)
        {
            this.id = id;

            this.name = name;
        }
        public  YSchool(int id)
        {
            this.id = id;

            this.name = @"陕科大附中";
        }
    }
   class Program
    {
        static void Main(string[] args)
        {
            YSchool shool1 = new YSchool();

            YSchool school2 = new YSchool(1, @"西工大附中");

            YSchool school3 = new YSchool(2);

            Console.ReadKey();
        }
    }

上面还修改了id和name的get/set属性,都改为只有get,因为这些属性值都是固有属性,实例化之后再赋值也就不符合逻辑了。也就是这些属性是只读的。

代码中提到了默认值,这里简单说一下。在声明字段的时候,可以用赋值运算符“=”给字段直接加一个值,比如

    string name = string.Empty;

这个不是给变量赋值,默认值只是一种形式,真正给变量赋值还是在构造函数中。一般规范的代码都要求声明变量时要赋初值的。如果生命时没有赋值的字段,都会由编译器增加一句赋值代码,将该字段赋值为设定的默认值。其实,无论我们是否给字段增加了默认值,字段都具备默认值的,只不过如果我们没有人为增加默认值,字段的默认值将是0或null。
这里还有一点要注意,前面提到过系统默认的构造函数,但是当定义了构造函数后,系统默认构造函数就不存在了。因此如果某些情况下,既要用到默认构造函数和带参数的构造函数,就要手动定义默认构造函数了。比如,

        public YSchool()
        {

        }

或者

        public YSchool()
        {
            this.id = 0;

            this.name = @"尚进";
        }

综上所述实例化类的规范表达式应该是:类名 实例名 = new 类名(构造函数参数列表);

分享到:
评论

相关推荐

    C#基础知识教程下载

    本教程旨在为初学者提供C#的基础知识,帮助他们快速入门并掌握这一强大的编程工具。 一、C#语言基础 1. 变量与数据类型:C#支持多种数据类型,包括基本类型(如int、double、bool)和引用类型(如类、接口、数组)...

    c#汇总,包括asp.net xml c#基础知识

    【C#基础知识】 C#(读作"C sharp")是一种面向对象的编程语言,由微软公司为.NET框架开发。它的设计目标是提供一种简洁、类型安全、高效且现代的编程语言,用于构建Windows桌面应用程序、Web应用程序以及移动平台...

    c#基础知识概述(WORD文档)

    C#是一种面向对象的编程语言,由微软开发,...以上是C#基础的概览,涵盖了类型系统、内存管理、类和对象、继承与接口、方法等关键概念。深入学习C#还需要了解更多的特性,如属性、事件、异常处理、泛型、异步编程等。

    C#开发必备基础知识

    本资料包提供了三个关键的学习资源,分别是《C#语言规范》、《C#字符串和正则表达式参考手册》以及《C#完全手册》,这些都是C#开发必备的基础知识。 1. **C#语言规范**:这是理解C#语法和语义的权威文档。它详细...

    C#基础知识库(含有基本概念和语法规则)

    这份"C#基础知识库"涵盖了C#编程的基础概念和语法规则,是初学者入门和进阶者巩固知识的重要参考资料。下面我们将深入探讨其中的关键知识点。 1. **C#基础概念** - **面向对象编程(OOP)**:C#是一种面向对象的...

    c#基础知识个人总结

    本篇文章将根据“c#基础知识个人总结”这一主题,深入探讨C#的基础知识,包括面向对象的概念、特性以及相关例题解析。 1. **C#基础语法** - 变量:C#中的数据类型分为值类型(如int、bool)和引用类型(如类、接口...

    基于windows桌面的c#基础知识,

    **基于Windows桌面的C#基础知识** C#是一种由微软公司推出的面向对象的编程语言,它在.NET框架下运行,主要用于构建Windows桌面应用程序、Web应用程序以及移动应用等。本课件集合了C#的基础知识,旨在帮助初学者...

    C# xhtml 基础1:格式化文本

    在C#中,可以通过构造属性字符串并插入引号,或者使用XmlWriter的WriteAttributeString方法。 3. **空元素**:对于没有内容的元素,如` `或`&lt;img&gt;`,XHTML要求使用自闭合形式`&lt;tag/&gt;`。C#的XmlWriter会自动处理...

    c# 基础知识库 基本语法等源码

    这个“c#基础知识库 基本语法等源码”压缩包包含了C#语言的基础控件使用和语法实践,是初学者入门和进阶的重要资源。下面,我们将详细探讨C#的一些核心知识点。 1. **基本语法**:C#的语法结构类似于C++和Java,...

    c#基础知识案例

    在本文中,我们将深入探讨C#的基础知识,并通过一个案例来演示其核心概念,这对于初学者来说是非常有帮助的。 1. **变量与数据类型**:在C#中,变量用于存储数据。每个变量都有一个特定的数据类型,例如整型(int)、...

    C#基础C#基础C#基础

    以上只是C#基础知识的一部分,实际学习过程中,还需要了解更多的高级特性,如委托、事件、匿名方法、Lambda表达式、匿名类型、动态类型、扩展方法、元数据等。C#是一个不断发展和演进的语言,随着.NET Core的推出,...

    C#语言基础知识初级教程(强烈推荐)

    本初级教程将引导初学者深入理解C#语言的基础知识,为后续的编程学习打下坚实的基础。 一、C#语言简介 C#是.NET框架的一部分,它支持多种编程范式,包括面向对象、面向组件和泛型编程。C#语法简洁清晰,易于学习,...

    C#常用知识整理

    以上就是C#常用的知识点,掌握这些基础知识将有助于你构建和维护高质量的C#应用程序。在实际编程过程中,还需要不断学习和理解更高级的主题,如并发处理、单元测试、设计模式等,以提升专业技能。

    C#基础知识案例

    本“C#基础知识案例”旨在深入浅出地介绍C#的关键概念和技术,帮助初学者快速掌握这门语言。 1. **基础语法** - 变量声明:C#中的变量需要先声明后使用,支持多种数据类型,如int、double、string等。 - 控制结构...

    C#基础知识编程实例

    本“C#基础知识编程实例”旨在通过一系列实例深入浅出地讲解C#的核心概念和技术,帮助初学者快速掌握这门语言。 一、C#基础语法 C#的语法结构类似于C++和Java,它有严格的类型检查和垃圾回收机制。实例中可能涵盖...

    C#编程艺术:构造函数与析构函数的奥秘

    ### C#编程艺术:构造函数与析构函数的奥秘 C#作为一种强大的面向对象的编程...掌握这些基础知识对于编写高效、可靠的C#代码至关重要。在未来的学习和实践中,我们应该不断探索这些概念的应用,以提升自己的编程技能。

    零基础快速入门c#极简基础知识3

    以上只是C#基础知识的一部分,深入学习还包括枚举、结构、集合、文件操作、网络编程、反射、设计模式等诸多内容。通过“零基础快速入门C#极简基础知识3”的学习,您将逐步建立起对C#编程的全面理解,并为进一步进阶...

    C#基础知识 pdf文档

    《C#基础知识 pdf文档》包含了C#编程语言的基础学习材料,涵盖了从基本概念到核心语法的重要知识点。以下是对这些主题的详细阐述: 1. **使用变量、操作符和表达式**: 变量是存储数据的容器,在C#中,我们需要先...

    C#课件C#基础知识.ppt

    9. 构造函数:C# 支持静态构造函数和实例构造函数,Java 只有实例构造函数。10. 委托(Delegate)与事件:C# 中的委托类似于 Java 的函数式接口,但委托可以用于事件处理,Java 通过监听器模式实现事件。 在 C# 中...

    C#技术内幕PDF,本书分基础篇、C#类基础、编写代码和高级C#4个部分。

    《C#技术内幕》这本书是深入理解C#编程语言的一部重要参考资料,它分为四个主要部分,涵盖了从基础知识到高级特性的全方位讲解。下面将详细阐述每个部分的主要知识点。 **基础篇** 这部分主要针对初学者,旨在建立...

Global site tag (gtag.js) - Google Analytics