C#中匿名类的声明及使用

C#中声明方法或类时,可以不指定的类或方法的名字,也就是匿名类和匿名的方法。以下主要介绍C#中匿名类的声明及使用。

1、匿名类的使用

匿名类是C# 3.0/.NET 3.x中新增特性,在匿名类的语法中并没有为其命名,而是直接使用new { }方式。

例如,

var anonyClass= new{ID = 1000,Name = "CJavaPy",Age = 3};
Console.WriteLine("ID:{0}-Name:{1}-Age:{2}", anonyClass.ID,anonyClass.Name, anonyClass.Age);

注意:通过反编译工具可以看出匿名类被编译后会生成一个[泛型类],且匿名类所生成的属性都是只读的,与其对应的字段也是只读的;匿名类还重写了基类的三个方法:Equals,GetHashCodeToString

2、匿名类的共享

1)如果定义的匿名类与之前定义过的一模一样:属性类型和顺序都一致,则默认共享前一个泛型类。

var annoyClass1 = new
{ID = 1010,Name = "C",Age = 3
};
Console.WriteLine("ID:{0}-Name:{1}-Age:{2}", annoyClass1.ID,annoyClass1.Name, annoyClass1.Age);
Console.WriteLine(annoyClass1.ToString());
// 属性类型和顺序与annoyClass1一致,共同使用一个匿名类
var annoyClass2 = new{ID = 1020,Name = "Python",Age = 5};
Console.WriteLine("ID:{0}-Name:{1}-Age:{2}", annoyClass1.ID,annoyClass1.Name, annoyClass1.Age);
Console.WriteLine("annoyClass1.GetType() == annoyClass2.GetType():{0}",annoyClass1.GetType() == annoyClass2.GetType());   

2)如果属性名称和顺序一致,但属性类型不同,还是共同使用一个泛型类,只是泛型参数改变了而已,所以在运行时会生成不同的类:

var annoyClass2 = new{ID = 1020,Name = "Python",Age = 5};
var annoyClass3 = new{ID = "Java",Name = 1030,Age = 7};
Console.WriteLine("ID:{0}-Name:{1}-Age:{2}", annoyClass3.ID,annoyClass3.Name, annoyClass3.Age);
Console.WriteLine("annoyClass3.GetType() == annoyClass2.GetType():{0}",annoyClass3.GetType() == annoyClass2.GetType());

3)如果数据型名称和类型相同,但顺序不同,那么编译器会重新创建一个匿名类

var annoyClass2 = new{ID = 1020,Name = "Python",Age = 5};
var annoyClass4 = new{Name = "JavaScript",ID = 1030,Age = 7};
Console.WriteLine("ID:{0}-Name:{1}-Age:{2}", annoyClass4.ID,annoyClass4.Name, annoyClass4.Age);
Console.WriteLine("annoyClass4.GetType() == annoyClass2.GetType():{0}",annoyClass4.GetType() == annoyClass2.GetType());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/140920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无感刷新token

无感刷新 无感刷新Token技术是一种用于实现持久登录体验的关键技术,它通过在用户登录后自动刷新Token,以延长用户的登录状态,避免频繁要求用户重新登录。 实现 使用access_token(短效token)和refresh_token&#xf…

CSS精灵图:提高网站性能的秘密武器

在网站开发中,页面加载速度是一个非常重要的指标。而CSS精灵图正是一种可以帮助提高网站性能的技术。它可以将多个小图标合并成一个大图,从而减少HTTP请求次数,提高页面加载速度。本篇博文将为你详细介绍CSS精灵图的概念、优势以及实现方式。…

海康威视(iVMS)综合安防系统任意文件上传漏洞复现 [附POC]

文章目录 海康威视(iVMS)综合安防系统任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 海康威视(iVMS)综合安防系统任意文件上传漏洞复…

[PyTorch][chapter 62][强化学习-基本概念]

前言: 目录: 强化学习概念 马尔科夫决策 Bellman 方程 格子世界例子 一 强化学习 强化学习 必须在尝试之后,才能发现哪些行为会导致奖励的最大化。 当前的行为可能不仅仅会影响即时奖赏,还有影响下一步奖赏和所有奖赏 强…

使用Inis搭配内网穿透实现Ubuntu上快速搭建博客网站远程访问

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总…

Spring bean标签

目录 Spring bean标签1.了解Spring Xml配置文件2.bean标签的Attrbute3.bean的子标签扩展FactoryBean Spring bean标签 在创建IOC容器的时候&#xff0c;是如何把配置文件解析成我们的BeanDefinition。本文针对其<bean/>标签中的属性及其子标签进行说明。 1.了解Spring Xm…

ElasticSearch搜索详细讲解与操作

全文检索基础 全文检索流程 流程&#xff1a; 创建索引 返回结果 查询索引 原始文档 创建索引 索引库 查询索引 创建索引&#xff1a; 获取文档 构建文档对象 分析文档分词 创建索引 查询索引&#xff1a; 用户查询结构 创建查询 执行查询 渲染结果 相关概念 索引库 索引库就…

在 uniapp 中 一键转换单位 (px 转 rpx)

在 uniapp 中 一键转换单位 px 转 rpx Uni-app 官方转换位置利用【px2rpx】插件Ctrl S一键全部转换下载插件修改插件 Uni-app 官方转换位置 首先在App.vue中输入这个&#xff1a; uni.getSystemInfo({success(res) {console.log("屏幕宽度", res.screenWidth) //屏…

酷柚易汛ERP - 商品库存余额表操作指南

1、应用场景 商品库存余额表用于查询商品在各仓库的实际结存量、单位成本以及成本等明细。 2、主要操作 打开【仓库】-【商品库存余额表】&#xff0c;可筛选仓库、商品、商品类别&#xff0c;导出/打印等操作见【销货单】不再赘述。 3、分享操作 库存余额分享&#xff0c;…

CCLink转Modbus TCP网关_MODBUS网口设置

兴达易控CCLink转Modbus TCP网关是一种用于连接CCLink网络和Modbus TCP网络的设备。它提供了简单易用的MODBUS网口设置&#xff0c;可以帮助用户轻松地配置和管理网络连接 1 、网关做为MODBUS主站 &#xff08;1&#xff09;将电脑用网线连接至网关的P3网口上。 &#xff08;…

计算机网络(一)

一、什么是计算机网络、计算机协议&#xff1f; 计算机网络就是由计算机作为收发端&#xff0c;不同计算机相互连接的网络&#xff0c;包括互联网&#xff08;Internet&#xff09;&#xff0c;公司或者家用网络&#xff08;intranet&#xff09;等等&#xff1b;其中Internet…

【C语言 | 指针】C指针详解(经典,非常详细)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

【数据结构】非递归实现二叉树的前 + 中 + 后 + 层序遍历(听说面试会考?)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;数据结构 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&…

利用角色roles上线wordpress项目

角色订制&#xff1a;roles ① 简介 对于以上所有的方式有个弊端就是无法实现复用假设在同时部署Web、db、ha 时或不同服务器组合不同的应用就需要写多个yml文件。很难实现灵活的调用。   roles 用于层次性、结构化地组织playbook。roles 能够根据层次型结构自动装载变量文…

CentOS7、CentOS8 如何修改ip信息(修改网络信息)(无图形界面)(亲测可用)

文章目录 CentOS 7方法一&#xff1a;使用 nmcli 命令方法二&#xff1a;编辑配置文件&#xff08;我的CentOS7是使用这种方法&#xff0c;亲测可用&#xff09; CentOS 8方法一&#xff1a;使用 nmcli 命令方法二&#xff1a;编辑配置文件 在 CentOS 系统中&#xff0c;如果你…

详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await

同步&异步的概念 在讲这四种异步方案之前&#xff0c;我们先来明确一下同步和异步的概念&#xff1a; 所谓同步(synchronization)&#xff0c;简单来说&#xff0c;就是顺序执行&#xff0c;指的是同一时间只能做一件事情&#xff0c;只有目前正在执行的事情做完之后&am…

Halcon WPF 开发学习笔记(2):Halcon导出c#脚本和WPF初步开发

文章目录 前言HalconC#教学简单说明如何二开机器视觉如何二次开发Halcon导出Halcon脚本新建WPF项目&#xff0c;导入Halcon脚本和Halcon命名空间 前言 我目前搜了一下我了解的机器视觉软件&#xff0c;有如下特点 优点缺点兼容性教学视频(B站前三播放量)OpenCV开源&#xff0…

Vue 组件化编程 和 生命周期

目录 一、组件化编程 1.基本介绍 : 2.原理示意图 : 3.全局组件示例 : 4.局部组件示例 : 5.全局组件和局部组件的区别 : 二、生命周期 1.基本介绍 : 2.生命周期示意图 : 3.实例测试 : 一、组件化编程 1.基本介绍 : (1) 开发大型应用的时候&#xff0c;页面往往划分成…

Flink之Java Table API的使用

Java Table API的使用 使用Java Table API开发添加依赖创建表环境创建表查询表输出表使用示例 表和流的转换流DataStream转换成表Table表Table转换成流DataStream示例数据类型 自定义函数UDF标量函数表函数聚合函数表聚合函数 API方法汇总基本方法列操作聚合操作Joins合并操作排…

智能优化算法(一):伪随机数的产生

文章目录 1.伪随机数介绍1.1.伪随机产生的意义1.2.伪随机产生的过程 2.产生U(0,1)的乘除同余法2.1.原始的乘同余法2.2.改进的乘同余法 3.产生正态分布的伪随机数4.基于逆变法产生伪随机数 1.伪随机数介绍 1.1.伪随机产生的意义 1.随机数的产生是进行随机优化的第一步也是最重要…