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

namespace Project5_26
{
    class Program
    {
        static void Main(string[] args)
        {
            Employee employee = new Employee("Cheng", "John", "10000");
            Console.WriteLine(string.Format("The last salary {0}.{1} got is {2}",employee.LastName,employee.FirstName,employee.Salary));
        }
    }
    class Employee
    {
        public string FirstName;
        public string LastName;
        public string Salary="not enough";
        public Employee(string firstName,string lastName,string salary)
        {
            FirstName = firstName;
            LastName = lastName;
            Salary = salary;
        }
    }
}

这个例子告诉我们构造器中的值会覆盖声明时指定的值。应该避免既在声明时赋值,又在构造器中赋值。

对象初始化器:

class Program

{

static void Main()

{

Employee employee1=new Employee(“Inigo”,”Montoya”){Titile=””,Salary=””};

}

}

规范:

要为所有属性提供有意义的默认值,确保默认值不会造成安全漏洞或者造成代码效率大幅下降。对于自动实现的属性,要通过构造器设置默认值。

要允许以任意顺序设置属性,即使这会造成对象临时处于无效状态。

规范:

如果使用构造器参数来设置属性,构造器参数(camel大小写风格)要使用和属性(Pascal大小写风格)相同的名称,区别仅仅是大小写风格。

构造器链:

public Employee(string firstName,string lastName)

{

}

public Employee(int id,string firstName,string lastName):this(firstName,lastName)

{

}

上一个例子中,获取3个参数的构造器调用获取两个参数的构造器,但是通常采用的是相反的调用模式-参数最少的构造器调用具有参数最多的构造器,为未知的参数传递默认值。

C#构造函数相关主题的更多相关文章

  1. 机器学习入门-贝叶斯构造LDA主题模型,构造word2vec 1.gensim.corpora.Dictionary(构造映射字典) 2.dictionary.doc2vec(做映射) 3.gensim.model.ldamodel.LdaModel(构建主题模型)4lda.print_topics(打印主题).

    1.dictionary = gensim.corpora.Dictionary(clean_content)  对输入的列表做一个数字映射字典, 2. corpus = [dictionary,do ...

  2. 2. C++11 构造函数相关

    1. 继承构造函数 派生类如果要使用基类的成员函数,可以通过using声明来完成. #include <iostream> using namespace std; class Base ...

  3. 曹工说Spring Boot源码(17)-- Spring从xml文件里到底得到了什么(aop:config完整解析【中】)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  4. [ACM训练] 算法初级 之 数据结构 之 栈stack+队列queue (基础+进阶+POJ 1338+2442+1442)

    再次面对像栈和队列这样的相当基础的数据结构的学习,应该从多个方面,多维度去学习. 首先,这两个数据结构都是比较常用的,在标准库中都有对应的结构能够直接使用,所以第一个阶段应该是先学习直接来使用,下一个 ...

  5. 一篇笔记带你快速掌握面向对象的Javascript(纯手打)

    /** * 创建对象 */ //1.工厂模式 //特点: //创建的对象无法识别其对象类型,不支持instanceof等判断方法,无法标识不同的对象 function createObj(name,s ...

  6. [java] 深入理解内部类: inner-classes

    [java] 深入理解内部类: inner-classes // */ // ]]>   [java] 深入理解内部类: inner-classes Table of Contents 1 简介 ...

  7. Android Bootloader LittleKernel的两篇文章 【转】

    转自:http://blog.csdn.net/loongembedded/article/details/41747523 2014-12-05 14:37 3599人阅读 评论(2) 收藏 举报 ...

  8. web前端学习(二) javascript对象和原型继承

    目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...

  9. C++多线程环境下的构造函数

    多线程的环境里,我们总不可避免要使用锁.于是一个常见的场景就是: class ObjectWithLock { private: std::mutex mtx_; SomeResType shared ...

随机推荐

  1. Hibernate中对象的3种状态:瞬时态、持久态、脱管态

    Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久 态的对象也称为PO(Persistence Objec ...

  2. C++学习笔记(九):作用域和命名空间

    作用域 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用域).变量的有效作用域从它的定义点开始,到和定义变量之前最邻近的开括号配对的第一个闭括号.也就是说,作用域由变 ...

  3. ASP.NET- 无刷新上传使用jQuery插件之ajaxFileUpload

    灰常好,我已经使用过里面的代码了,可以用,原文地址:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html 一.ajaxFil ...

  4. (JAVA版)冒泡排序

    核心代码: public void bubbleSort(){ ;i<length-;i++){ ;j<length-i-;j++){ ]) swap(j,j+); } } } publi ...

  5. PJax在jQuery 3.0无法运行问题修复

    PJax在jQuery 3.0无法运行 [现象] 页面报错:Uncaught TypeError: Cannot read property 'push' of undefined [原因] jQue ...

  6. Codeforces Round #325 (Div. 2) D. Phillip and Trains BFS

    D. Phillip and Trains Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/586/ ...

  7. OpenCV 读取.xml文件

    OpenCV 只提供了读取和存储.xml和.yml 文件格式的函数. 读取.xml文件的C++例程如下: cv::FileStorage fs; //OpenCV 读XML文件流 cv::Mat De ...

  8. 【异构计算】OpenCL矩阵转置

    介绍 矩阵转置,主要的技巧还是利用好local memory ,防止local memory,以及glabol memory的读取尽量是合并读写. 完整代码一: main.cpp代码 #include ...

  9. Upgrading to MySQL 5.7---focusing on temporal types

    https://www.percona.com/blog/2016/04/27/upgrading-to-mysql-5-7-focusing-on-temporal-types/ http://ww ...

  10. win7系统升家庭版级为旗舰版的方法

    在使用的便利性上,两者没有太大差别,不过有些高级功能是家庭版所没有的,所以我们很多人都希望升级为旗舰版,那么我们需要重新安装系统吗?显然没有这么麻烦,我们只需要简单的几个步骤即可.   步骤/方法   ...