C#编程(十六)----------匿名类型
匿名类型
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#编程(十六)----------匿名类型相关推荐
- java int biginteger_[十六]基础类型BigInteger简介
public BigInteger(String val, int radix) { //定义了两个变量一个光标,光标记录着应该要处理的数据索引下标 //另一个numDigits 用来保存需要处理的数 ...
- Java并发编程(十六):CyclicBarrier源码分析
前言 CyclicBarrier可以建立一个屏障,这个屏障可以阻塞一个线程直到指定的所有线程都达到屏障.就像团队聚餐,等所有人都到齐了再一起动筷子.根据Cyclic就可以发现CyclicBarri ...
- TypeScript详解十六:类型声明(declare)
目录 前言 一.类型声明的作用? 1.1 declare 关键字 1.2 示例 二.常见的几种类型声明 2.1 普通类型声明 2.2 外部枚举 2.3 命名空间 三.类型声明文件 3.1 模拟类型声明 ...
- 16代表啥_十六型人格的四个字母分别代表了什么含义?
要解析用于描述十六型人格的四个字母的含义,就必须从八个维度开始探讨.众所周知,这八个维度分别是E/I(外倾/内倾).N/S(直觉/感觉).T/F(思考/情感).J/P(判断/感知).它们总是被放在一起 ...
- 窗口消息——Windows核心编程学习手札之二十六
窗口消息 --Windows核心编程学习手札之二十六 Windows允许一个进程至多建立10000个不同类型的用户对象(user object):图符.光标.窗口类.菜单.加速键表等,当一个线程调用一 ...
- oracle过滤器基础,Oracle培训(四十六)——Servlet第六章知识点总结——过滤器编程...
Oracle培训(四十六)--Servlet第六章知识点总结--过滤器编程 目标 编写一个过滤器 部署一个过滤器 了解请求和响应包装器 在请求分发器下的过滤器 知识点预览 过滤器 过滤器 1. 什么是 ...
- abd shell关闭所有程序_第十六章 Shell编程
第十六章 Shell编程 16.1 shell脚本运行 所谓脚本,就是把众多命令写入一个文件中,让其按照一定的逻辑顺序执行,以完成一个具体的功能.而在Linux的shell编译环境下,shell编程与 ...
- [go学习笔记.第十六章.TCP编程] 3.项目-海量用户即时通讯系统-redis介入,用户登录,注册
1.实现功能-完成用户登录 在redis手动添加测试用户,并画出示意图以及说明注意事项(后续通过程序注册用户) 如:输入用户名和密码,如果在redis中存在并正确,则登录,否则退出系统,并给出相应提示 ...
- 《Python编程:从入门到实践》第十六章:下载数据
下载数据 我们将访问并可视化以两种常见格式存储的数据:CSV和JSON.我们将使用Python模块csv来处理以CSV(逗号分隔的值)格式存储的天气数据,找出两个不同地区在一段时间内的最高温度和最低温 ...
最新文章
- FFmpeg中libswscale库简介及测试代码
- 深度学习笔记七:循环神经网络RNN(基本理论)
- pycharm不支持svn,是需要svn命令行工具没有安装(for windows)
- 如何学习streamdecoder类_2019年终巨献:一份拿下了阿里、网易、滴滴等大厂offer的学习笔记...
- 打靶法matlab求边值问题代码,数学实验“微分方程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序)...
- centos6.4安装apache php mysql_CentOS 6.4配置Apache+PHP5+MySQL(lamp)环境以及报错处理思路...
- Puppet基础篇7-编写第一个完整测试模块puppet
- 如何落地用户画像分析?
- 2022年ADB 命令知多少?一文2000字详细 ADB 命令大全来啦
- Python数据分析案例09——航空公司客户聚类分析
- 不同网段怎么ping通
- dxp交流电源怎么找_常见dxp元件搜索方法
- 计算机考研方向哪个好考,2022考研:计算机专业考研选择哪个方向比较好就业?...
- Win10应用程序添加到右键中
- iOS 3DTouch 功能
- Luogu P1144 最短路计数
- 【聚宽本地数据JQData】一个简单的股票回测策略
- CV/PR:模式识别与图像处理笔试题
- 哈佛商学院20部必看电影
- HCIP第十二天(BGP黑洞、防环、配置)
热门文章
- jQuery的$.fn使用
- python信号与槽_Python信号和插槽(1),python,与,一
- html 消息通知功能,HTML5之消息通知的使用(Web Notification)
- 中职pHP课程标准,中等职业学校数课程标准.doc
- 构建Chua 混沌电路 - 基本测试
- 第十六届智能车竞赛广东省线上比赛第二波来袭
- 从0 开始 DIY你的Arduino UNO
- 2021年春季学期-信号与系统-第七次作业参考答案-第五小题
- 天高任鸟飞,海阔凭鱼跃
- KiCAD初学者指南