C#构造函数相关主题
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#构造函数相关主题的更多相关文章
- 机器学习入门-贝叶斯构造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. C++11 构造函数相关
1. 继承构造函数 派生类如果要使用基类的成员函数,可以通过using声明来完成. #include <iostream> using namespace std; class Base ...
- 曹工说Spring Boot源码(17)-- Spring从xml文件里到底得到了什么(aop:config完整解析【中】)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- [ACM训练] 算法初级 之 数据结构 之 栈stack+队列queue (基础+进阶+POJ 1338+2442+1442)
再次面对像栈和队列这样的相当基础的数据结构的学习,应该从多个方面,多维度去学习. 首先,这两个数据结构都是比较常用的,在标准库中都有对应的结构能够直接使用,所以第一个阶段应该是先学习直接来使用,下一个 ...
- 一篇笔记带你快速掌握面向对象的Javascript(纯手打)
/** * 创建对象 */ //1.工厂模式 //特点: //创建的对象无法识别其对象类型,不支持instanceof等判断方法,无法标识不同的对象 function createObj(name,s ...
- [java] 深入理解内部类: inner-classes
[java] 深入理解内部类: inner-classes // */ // ]]> [java] 深入理解内部类: inner-classes Table of Contents 1 简介 ...
- Android Bootloader LittleKernel的两篇文章 【转】
转自:http://blog.csdn.net/loongembedded/article/details/41747523 2014-12-05 14:37 3599人阅读 评论(2) 收藏 举报 ...
- web前端学习(二) javascript对象和原型继承
目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...
- C++多线程环境下的构造函数
多线程的环境里,我们总不可避免要使用锁.于是一个常见的场景就是: class ObjectWithLock { private: std::mutex mtx_; SomeResType shared ...
随机推荐
- 【Away3D代码解读】(三):渲染核心流程(渲染)
还是老样子,我们还是需要先简略的看一下View3D中render方法的渲染代码,已添加注释: //如果使用了 Filter3D 的话会判断是否需要渲染深度图, 如果需要的话会在实际渲染之前先渲染深度图 ...
- ServletContext1
---------------ConfigServlet.java----------- protected void doGet(HttpServletRequest request, HttpSe ...
- discuz!版本号信息改动步骤
建完网站后,就到了改动discuz! 论坛的步骤了,,将其改动为自己喜欢的样子.是非常有意思的,废话不多说了.以下给大家介绍改动的方法. 1.[改动后台-首页的版权]打开ftp.连接网站,进入到:/f ...
- Oracl数据库管理方面的资料(查询sga,查看oracle数据库名称sid,查看oracle数据库名称,查看表空间,修改表空间名称)
显示Oracle sga相关信息: SQL> show sga Total System Global Area 105978600 bytes Fixed Size 453352 bytes ...
- [Bootstrap] 7. Working Herader
<header class="navbar navbar-default navbar-static-top"> <div class="contain ...
- Linux下批量改动名字方法
如果任务是把文件夹下全部的.log后缀文件名称中的2014去掉. 方法一) 脚本 这样的方法通过ls把当前文件夹下全部的文件进行遍历,然后获取文件名称,进行mv操作.例如以下: #!/bin/sh f ...
- mysqldump原理4
http://blog.csdn.net/dba_waterbin/article/details/23611601?utm_source=tuicool&utm_medium=referra ...
- Qt中使用QProcess备份和恢复Mysql数据库
分类: Qt2011-02-18 21:35 1395人阅读 评论(3) 收藏 举报 qtmysql数据库windowspathcmd . 使用Qt做MySQL数据库开发,遇到需要备份.还原数据库的问 ...
- Linux下各种常见环境变量的配置
Linux系统下各种环境变量都通过修改/etc/profile文件来实现.由于是系统文件,修改此文件需要root权限.因此实现以下功能都需要用户拥有root权限. 另:不要轻易修改profile文 ...
- Mysql在windows下的免安装配置步骤和重新安装的步骤
windows下mysql免安装配置 1. 下载mysql免安装压缩包 下载mysql-5.6.22-winx64.zip 解压到本地D:\mysql-5.6.22-winx64 2. 修改配置文件 ...