匿名类型

var和new关键字一起使用,可以创建匿名类型.

匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。 类型名由编译器生成,并且不能在源代码级使用。 每个属性的类型由编译器推断

public class BookAsGood

{

// 定义一组私有成员变量

private string m_name;

private double m_price;

// 为成员变量设置属性

public string Name

{

get

{

return this.m_name;

}

set

{

this.m_name = value;

}

}

public string Price

{

get

{

return this.m_price;

}

set

{

this.m_price = value;

}

}

}

这只是引入了两个字段的量,如果是多个字段,代码量可想而知,所以就引入了匿名类型.

匿名类型的使用:如果要定义一个包含名字和价格的书对象.

var book = new {Name=”C#”,Price=100};

这会生成一个包含Name和Price属性的对象.

如果我们再创建一个书的对象

var bookA = new {Name=”C++”,Price=10};

其中,book和bookA的类型是相同的.我们可以这样设置:

book=bookA;

如果设置的值来自于另一个对象,例如

BookAsGood b=new BookAsGood();

var book = new {b.Pame,b.Price};

book对象有Name和Price属性.

在访问的时候可以直接和访问对象的方法一样:

Console.WriteLine(book.Name+”----”+book>price);

但是如果是这样:

book.Name=”C”;//这是错误的

尾音这里的book的各个属性只实现了get而没有实现set.所以不能赋值.为什么没有实现set?

不管怎么说,为了程序的安全性,尽量不要使用匿名类型,除非你深刻的明白匿名类型.

匿名类型和隐式类型的区别

var age=90;

我们能根据右边的表达式,出短处等号左边的变量age是int类型.这是隐式类型

var book = new { Name = "C#", Price = 100};

上面的book就是一个匿名类型。其中的Name = "C#"和Price = 100又可以分别看作是隐式类型变量。

C#编程(十六)----------匿名类型相关推荐

  1. java int biginteger_[十六]基础类型BigInteger简介

    public BigInteger(String val, int radix) { //定义了两个变量一个光标,光标记录着应该要处理的数据索引下标 //另一个numDigits 用来保存需要处理的数 ...

  2. Java并发编程(十六):CyclicBarrier源码分析

    前言   CyclicBarrier可以建立一个屏障,这个屏障可以阻塞一个线程直到指定的所有线程都达到屏障.就像团队聚餐,等所有人都到齐了再一起动筷子.根据Cyclic就可以发现CyclicBarri ...

  3. TypeScript详解十六:类型声明(declare)

    目录 前言 一.类型声明的作用? 1.1 declare 关键字 1.2 示例 二.常见的几种类型声明 2.1 普通类型声明 2.2 外部枚举 2.3 命名空间 三.类型声明文件 3.1 模拟类型声明 ...

  4. 16代表啥_十六型人格的四个字母分别代表了什么含义?

    要解析用于描述十六型人格的四个字母的含义,就必须从八个维度开始探讨.众所周知,这八个维度分别是E/I(外倾/内倾).N/S(直觉/感觉).T/F(思考/情感).J/P(判断/感知).它们总是被放在一起 ...

  5. 窗口消息——Windows核心编程学习手札之二十六

    窗口消息 --Windows核心编程学习手札之二十六 Windows允许一个进程至多建立10000个不同类型的用户对象(user object):图符.光标.窗口类.菜单.加速键表等,当一个线程调用一 ...

  6. oracle过滤器基础,Oracle培训(四十六)——Servlet第六章知识点总结——过滤器编程...

    Oracle培训(四十六)--Servlet第六章知识点总结--过滤器编程 目标 编写一个过滤器 部署一个过滤器 了解请求和响应包装器 在请求分发器下的过滤器 知识点预览 过滤器 过滤器 1. 什么是 ...

  7. abd shell关闭所有程序_第十六章 Shell编程

    第十六章 Shell编程 16.1 shell脚本运行 所谓脚本,就是把众多命令写入一个文件中,让其按照一定的逻辑顺序执行,以完成一个具体的功能.而在Linux的shell编译环境下,shell编程与 ...

  8. [go学习笔记.第十六章.TCP编程] 3.项目-海量用户即时通讯系统-redis介入,用户登录,注册

    1.实现功能-完成用户登录 在redis手动添加测试用户,并画出示意图以及说明注意事项(后续通过程序注册用户) 如:输入用户名和密码,如果在redis中存在并正确,则登录,否则退出系统,并给出相应提示 ...

  9. 《Python编程:从入门到实践》第十六章:下载数据

    下载数据 我们将访问并可视化以两种常见格式存储的数据:CSV和JSON.我们将使用Python模块csv来处理以CSV(逗号分隔的值)格式存储的天气数据,找出两个不同地区在一段时间内的最高温度和最低温 ...

最新文章

  1. FFmpeg中libswscale库简介及测试代码
  2. 深度学习笔记七:循环神经网络RNN(基本理论)
  3. pycharm不支持svn,是需要svn命令行工具没有安装(for windows)
  4. 如何学习streamdecoder类_2019年终巨献:一份拿下了阿里、网易、滴滴等大厂offer的学习笔记...
  5. 打靶法matlab求边值问题代码,数学实验“微分方程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序)...
  6. centos6.4安装apache php mysql_CentOS 6.4配置Apache+PHP5+MySQL(lamp)环境以及报错处理思路...
  7. Puppet基础篇7-编写第一个完整测试模块puppet
  8. 如何落地用户画像分析?
  9. 2022年ADB 命令知多少?一文2000字详细 ADB 命令大全来啦
  10. Python数据分析案例09——航空公司客户聚类分析
  11. 不同网段怎么ping通
  12. dxp交流电源怎么找_常见dxp元件搜索方法
  13. 计算机考研方向哪个好考,2022考研:计算机专业考研选择哪个方向比较好就业?...
  14. Win10应用程序添加到右键中
  15. iOS 3DTouch 功能
  16. Luogu P1144 最短路计数
  17. 【聚宽本地数据JQData】一个简单的股票回测策略
  18. CV/PR:模式识别与图像处理笔试题
  19. 哈佛商学院20部必看电影
  20. HCIP第十二天(BGP黑洞、防环、配置)

热门文章

  1. jQuery的$.fn使用
  2. python信号与槽_Python信号和插槽(1),python,与,一
  3. html 消息通知功能,HTML5之消息通知的使用(Web Notification)
  4. 中职pHP课程标准,中等职业学校数课程标准.doc
  5. 构建Chua 混沌电路 - 基本测试
  6. 第十六届智能车竞赛广东省线上比赛第二波来袭
  7. 从0 开始 DIY你的Arduino UNO
  8. 2021年春季学期-信号与系统-第七次作业参考答案-第五小题
  9. 天高任鸟飞,海阔凭鱼跃
  10. KiCAD初学者指南