C#中使用is关键字检查对象是否与给定类型兼容
目录
一、定义
二、示例
三、生成
在程序的开发过程中经常会使用类型转换,如果类型转换不成功则会出现异常,从抛出异常到捕获并处理异常,无形中增加了系统的开销,而且太过频繁地处理异常还会严重地影响系统的稳定性。is关键字可以有效地解决上面出现的问题。is关键字用于检查对象是否与给定类型兼容,如果兼容则返回true,如果不兼容则返回false。在进行类型转换前,可以先使用is关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。
一、定义
is关键字主要用于检查对象是否与指定类型兼容,如果兼容则返回true,如果不兼容则返回false。
二、示例
// 使用is关键字检查对象是否与给定类型兼容
namespace _025
{public partial class Form1 : Form{private GroupBox? groupBox1;private GroupBox? groupBox2;private RadioButton? radioButton2;private RadioButton? radioButton1;private RadioButton? radioButton4;private RadioButton? radioButton3;private Button? button1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // radioButton2// radioButton2 = new RadioButton{AutoSize = true,Location = new Point(42, 49),Name = "radioButton2",Size = new Size(102, 21),TabIndex = 1,TabStop = true,Text = "文件对象",UseVisualStyleBackColor = true,};// // radioButton1// radioButton1 = new RadioButton{AutoSize = true,Location = new Point(42, 22),Name = "radioButton1",Size = new Size(102, 21),TabIndex = 2,TabStop = true,Text = "字符串对象",UseVisualStyleBackColor = true,};// // groupBox1// groupBox1 = new GroupBox{Location = new Point(0, 0),Name = "groupBox1",Size = new Size(150, 100),TabIndex = 0,TabStop = false,Text = "对象"};groupBox1.Controls.Add(radioButton2);groupBox1.Controls.Add(radioButton1);groupBox1.SuspendLayout();// // radioButton4// radioButton4 = new RadioButton{AutoSize = true,Location = new Point(42, 49),Name = "radioButton4",Size = new Size(102, 21),TabIndex = 1,TabStop = true,Text = "Fileinfo类型",UseVisualStyleBackColor = true,};// // radioButton3// radioButton3 = new RadioButton{AutoSize = true,Location = new Point(42, 22),Name = "radioButton3",Size = new Size(102, 21),TabIndex = 2,TabStop = true,Text = "string类型",UseVisualStyleBackColor = true,};// // groupBox2// groupBox2 = new GroupBox{Location = new Point(165, 0),Name = "groupBox2",Size = new Size(150, 100),TabIndex = 0,TabStop = false,Text = "类型"};groupBox2.Controls.Add(radioButton4);groupBox2.Controls.Add(radioButton3);groupBox2.SuspendLayout(); // // button1// button1 = new Button{Location = new Point(114, 116),Name = "button1",Size = new Size(75, 23),TabIndex = 1,Text = "查看是否兼容",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(314, 151);Controls.Add(button1);Controls.Add(groupBox2);Controls.Add(groupBox1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "is关键字查看类型兼容"; groupBox1.ResumeLayout(false);groupBox1.PerformLayout();groupBox2.ResumeLayout(false);groupBox2.PerformLayout();}/// <summary>/// 容器1里的2个单选按钮只能二选一,要么字符串对象要么文件对象,/// 容器2里的2个单选按钮只能二选一,要么字符串类型要么文件类型,/// 当文件对象与文件类型配对检查时,判断为类型兼容,/// 当字符串对象与字符串类型配对检查时,判断为类型兼容,/// 其他配对情况均判断为类型不兼容。/// </summary>private void Button1_Click(object? sender, EventArgs e){object P_obj = radioButton1!.Checked ? //正确的为变量添加引用"C# 编程词典" : new FileInfo(@"d:\");if (radioButton3!.Checked) //判断选择了哪一个类型{if (P_obj is string) //判断对象是否为字符串类型MessageBox.Show( //提示兼容信息"对象与指定类型兼容", "提示!");elseMessageBox.Show( //提示不兼容信息"对象与指定类型不兼容", "提示!");}else{if (P_obj is FileInfo) //判断对象是否为文件类型MessageBox.Show( //提示兼容信息"对象与指定类型兼容", "提示!");elseMessageBox.Show( //提示不兼容信息"对象与指定类型不兼容", "提示!");}} }
}
三、生成
相关文章:
C#中使用is关键字检查对象是否与给定类型兼容
目录 一、定义 二、示例 三、生成 在程序的开发过程中经常会使用类型转换,如果类型转换不成功则会出现异常,从抛出异常到捕获并处理异常,无形中增加了系统的开销,而且太过频繁地处理异常还会严重地影响系统的稳定性。is关键字可…...
AI时代下,如何看待“算法利维坦”?
ChatGPT的浪潮从2022年袭来后,至今热度不减,呈现出蓬勃发展的趋势。AI家居、医疗、教育、金融、公益、农业、艺术......AI真的已经走进了生活的方方面面,我们仿佛已经进入了AI时代,势不可挡。人工智能水平如此之高,不禁…...
Linux上管理不同版本的 JDK
当在 Linux 上管理不同版本的 JDK 时,使用 yum 和 dnf 可以方便地安装和切换不同的 JDK 版本。本文将介绍如何通过这两个包管理工具安装 JDK 1.8 和 JDK 11,并利用软连接动态关联这些版本。 安装 JDK 1.8 和 JDK 11 使用 yum 安装 JDK 1.8 打开终端并…...
直方图与均衡化
直方图 统计图像中相同像素点的数量。 使用cv2.calcHist(images, channels, mask, histSize, ranges)函数 images:原图像图像格式为uint8或float32,当传入函数时应用[]括起来,例如[img]。 channels:同样用中括号括起来ÿ…...
Java——猫猫图鉴微信小程序(前后端分离版)
目录 一、开源项目 二、项目来源 三、使用框架 四、小程序功能 1、用户功能 2、管理员功能 五、使用docker快速部署 六、更新信息 审核说明 一、开源项目 猫咪信息点-ruoyi-cat: 1、一直想做点项目进行学习与练手,所以做了一个对自己来说可以完成的…...
PiflowX组件-ReadFromKafka
ReadFromKafka组件 组件说明 从kafka中读取数据。 计算引擎 flink 有界性 Unbounded 组件分组 kafka 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子kafka_hostKAFKA_HOST“”无是逗号分隔的Ka…...
Ubuntu 安装MySQL以及基本使用
前言 MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管理其数据。 安装…...
基于Freeswitch实现的Volte网视频通知应用
现在运营商的Volte网络已经很好的支持视频通话了,因此在原来的电话语音通知的基础上,可以更进一步实现视频的通知,让用户有更好的体验,本文就从技术角度,基于Freeswitch来实现此类应用(本文假设读者已对Fre…...
怎么实现Servlet的自动加载
在实际开发时,有时候会希望某些Servlet程序可以在Tomcat启动时随即启动。但在默认情况下,第一次访问servlet的时候,才创建servlet对象。 如果servlet构造函数里面的代码或者init方法里面的代码比较多,就会导致用户第一次访问serv…...
15. Mysql 变量的使用
目录 变量的概述自定义变量系统变量查看系统变量系统变量赋值 局部变量总结参考资料 变量的概述 MySQL支持不同类型的变量,包括自定义变量、系统变量和局部变量。自定义变量是在会话中定义的变量,用于存储临时数据。系统变量是MySQL服务器提供的全局变量…...
为什么ChatGPT采用SSE协议而不是Websocket?
在探索ChatGPT的使用过程中,我们发现GPT采用了流式数据返回的方式。理论上,这种情况可以通过全双工通信协议实现持久化连接,或者依赖于基于EventStream的事件流。然而,ChatGPT选择了后者,也就是本文即将深入探讨的SSE&…...
Elasticsearch:使用 ELSER v2 文本扩展进行语义搜索
Elastic 提供了一个强大的 ELSER 供我们进行语义搜索。ELSER 是一种稀疏向量的搜索方法。我们无需对它做任何的微调及训练。它是一种 out-of-domain 的模型。目前它仅对英文进行支持。希望将来它能对其它的语言支持的更好。更多关于 ELSER 的知识,请参阅文章 “Elas…...
Matlab:BP神经网络算法,二叉决策树
1、BP神经网络算法 (1)步骤 1.准备训练数据和目标值 2.创建并配置BP神经网络模型 3.训练BP神经网络模型 4.用BP神经网络模型预测数据 例:某企业第一年度营业额为132468,第二年度为158948,第三年度为183737,预测第四年度的营…...
Python实现员工管理系统(Django页面版 ) 七
各位小伙伴们好久不见,2024年即将到来,小编在这里提前祝大家新的一年快快乐乐,能够事业有成,学习顺心,家庭和睦,事事顺利。 今天我们本篇要实现的是一个登录界面的实现,其实登录界面的实现看着挺…...
听GPT 讲Rust源代码--src/tools(34)
File: rust/src/tools/clippy/clippy_lints/src/collection_is_never_read.rs 文件"collection_is_never_read.rs"位于Rust源代码中的clippy_lints工具中,其作用是检查在集合类型(如Vec、HashMap等)的实例上执行的操作是否被忽略了…...
k8s的陈述式资源管理(命令行操作)
(一)k8s的陈述式资源管理 1、命令行:kubectl命令行工具——用于一般的资源管理 (1)优点:90%以上ce场景都可以满足 (2)特点:对资源的增、删、查比较方便,对…...
uniapp uview裁剪组件源码修改(u-avatar-cropper),裁出可自定义固定大小图片
u-avatar-cropper修改后 <template><view class"index"><!-- {{userinfo}} --><view class"top"><view class"bg"><image src"../../static/electronic_card/bg.png"></image></view&g…...
【机器学习前置知识】Beta分布
Beta分布与二项分布的关系 Beta分布与二项分布密切相关,由二项分布扩展而来,它是用来描述一个连续型随机变量出现的概率的概率密度分布,表示为 X X X~ B e t a ( a , b ) Beta(a,b) Beta(a,b) , a 、 b a、b a、b 是形状参数。Beta分布本质上也是一个概率密度函数,只是这…...
Notepad++批量更改文件编码格式及文档格式
背景: 在项目中遇到Windows平台VS的MSVC编译不识别Unix下UTF-8编码导致的编译失败问题。需要将Unix下的UTF-8转为UTF-8-BOM格式。网上找了些方式,之后又深入探究了下文档转换的可能性,共享给大家。(当然Windows和Unix平台代码格式…...
Linux驱动开发学习笔记6《蜂鸣器实验》
目录 一、蜂鸣器驱动原理 二、硬件原理分析 三、实验程序编写 1、 修改设备树文件 (1)添加pinctrl节点 (2)添加BEEP设备节点 (3)检查PIN 是否被其他外设使用 2、蜂鸣器驱动程序编写 3、编写测试AP…...
鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化
鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、设置过程 打开IDE,在第一个菜单File 中找到Settings...菜单 在Setting...中找到Plugins…...
毫米波雷达:从 3D 走向 4D
1 毫米波雷达已广泛应用于汽车 ADAS 系统 汽车智能驾驶需要感知层、决策层、执行层三大核心系统的高效配合,其中感知层通过传感器探知周围的环境。汽车智能驾驶感知层将真实世界的视觉、物理、事件等信息转变成数字信号,为车辆了解周边环境、制定驾驶操…...
CENTOS docker拉取私服镜像
概述 docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker镜像的拉取。 centos6版本太老,docker的使用过程中问题较多,centos7相对简单容易。 本文档主要介绍centos系统安装docker和拉取docker私…...
【前端面经】即时设计
目录 前言一面git 常见命令跨窗口通信vue 响应式原理发布订阅模式翻转二叉树Promise.all()扁平化数组面试官建议 二面Event Loop 原理Promise 相关css 描边方式requestAnimationReact 18 新特性JSX 相关react 输出两次函数式编程React 批处理机制http请求头有哪些本地存储性能优…...
前端三件套html/css/js的基本认识以及示例程序
简介 本文简要讲解了html,css,js.主要是让大家简要了解网络知识 因为实际开发中很少直接写html&css,所以不必过多纠结,了解一下架构就好 希望深度学习可以参考MDN和w3school HTML 基础 HTML (Hyper Text Markup Language) 不是一门编程语言,而是一种用来告知浏览器如…...
云计算:OpenStack 配置云主机实例的存储挂载并实现外网互通
目录 一、实验 1. 环境 2.配置存储挂载 3.云主机实例连接外部网络(SNAT) 4.外部网络连接云主机实例(DNAT) 二、问题 1.云主机 ping 不通外部网络 2.nova list 查看云主机列表报错 3.nova list 与 virsh list --all有何区…...
python/selenium/jenkins整合
1、新建python项目,专门写selenium代码,建议用pytest框架写。 2、把代码上传到代码库中。 3、环境配置: 3.1 在跑jenkins的机器上配置好python环境,需要python --version能在任何地方运行(配置好系统环境变量&#…...
华为路由器ACL操作SSH接口
ACL的定义 访问控制列表(Access Control Lists,ACL)是应用在路由器接口的指令列表。这些指令列表用来告诉路由器哪些数据包可以收、哪些数据包需要拒绝。至于数据包是被接收还是拒绝,可以由类似于源地址、目的地址、端口号等的特…...
Flutter 三点三:Dart Stream
Stream Stream用于接收异步事件Stream 可以接收多个异步事件Stream.listen()方法返回StreamSubscription 可用于取消事件订阅,取消后,不再接收事件 基本使用 Stream.fromFutures([Future.delayed(Duration(seconds: 1),(){return "事件1";})…...
centos 防火墙 设置 LTS
centos 防火墙 设置 LTS https://blog.csdn.net/m0_58805648/article/details/130671008...
做公司网站建设价格/合肥关键词排名技巧
1, 数据 函数程序 都定义在 实例化对象中通过调用 实例化对象的函数方法 调用 实例化对象中 存储的数据执行程序 实现效果2, this指向必须是实例化对象匿名函数 --- 箭头函数回调函数 通过 bind() 语法修改设定 this指向提前定义一个变量 存储this指向一个函数中 要是用 多个…...
中国工程建设造价信息网站/北京seo实战培训班
有时我们在安装系统后,发现没有安装当前系统的内核源码在/usr/src/kernels目录下。其实很简单,是少安装了一个rpm包(kernel-devel); 安装上就可以了 有些软件安装没有问题,运行时就报错。(我今天…...
京东网站建设步骤/广东云浮疫情最新情况
全球最厉害的14位程序员都有哪些人?接下来让我们一起来看一下让业界膜拜的这十几位顶级编程大神。 注意,排名不分先后。 01 Jon Skeet 个人名望:程序技术问答网站Stack Overflow总排名第一的大神,每月的问答量保持在425个左右。 …...
wordpress标签多重筛选/简述企业网站推广的一般策略
一、虚拟局域网(VLAN) 当前在我们构造企业网络时所采用的主干网络技术一般都是基于交换和虚拟网络的。交换技术将共享介质改为独占介质,大大提高网络速度。虚拟网络技术打破了地 理环境的制约,在不改动网络物理连接的情况下可以任意将工作站在工作组或子网之间移动,工作站组成逻…...
贵州省城市建设厅网站/关键词排名推广方法
大家好, 为提升上传图片的用户体验,我们已经把上传图片后再将图片插入文章的流程做了改进。自此,图片上传完毕后,直接点击后面的“插入”按钮,就可以直接把该图片插入编辑器内光标所在的位置了。如图: 另一…...
上海网站备案/爱站网 关键词挖掘工具站
Android开发:如何实现TCP和UDP传输 http://bbs.starandroid.com/showtopic-10667.html Android平台值得关注的开源项目 http://bbs.starandroid.com/showtopic-10668.html Android电源管理相关应用技巧分享 http://bbs.starandroid.com/showtopic-10670…...