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(    //提示兼容信息
                        "对象与指定类型兼容", "提示!");
                else
                    MessageBox.Show(    //提示不兼容信息
                        "对象与指定类型不兼容", "提示!");
            }
            else
            {
                if (P_obj is FileInfo)  //判断对象是否为文件类型
                    MessageBox.Show(    //提示兼容信息
                        "对象与指定类型兼容", "提示!");
                else
                    MessageBox.Show(    //提示不兼容信息
                        "对象与指定类型不兼容", "提示!");
            }
        }   
    }
}

三、生成

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL线上慢SQL问题分析处理小记

相同数据量表结构&#xff0c;线上执行12s 本地执行0.1s过程分析 1. 慢SQL信息 SELECT t1.id,t2.idFROM t_platform_target_standard_target_index t1LEFT JOIN t_platform_target_standard t2 ON t1.target_number t2.target_numberWHERE t1.delete_flag 0 AND t2.user_num …

如何使用Docker将.Net6项目部署到Linux服务器(三)

目录 四 安装nginx 4.1 官网下载nginx 4.2 下载解压安装nginx 4.3 进行configure 4.4 执行make 4.5 查看nginx是否安装成功 4.6 nginx的一些常用命令 4.6.1 启动nginx 4.6.2 通过命令查看nginx是否启动成功 4.6.3 关闭Nginx 4.6.5 重启Nginx 4.6.6 杀掉所有Nginx进程 4.…

netstat命令使用

在线安装 yum install -y net-tools 离线安装 下载本文关联的资源 解压得到离线安装包 拷贝到服务器 执行离线安装命令&#xff0c;需要在rpm文件所在路径执行 # 离线安装 rpm -Uvh --force --nodeps *.rpm 使用 netstat -nltp

51单片机项目(23)——基于51单片机的电子秤仿真

1.功能设计 使用51单片机&#xff0c;以及HX711模块&#xff0c;完成了对物体重量的测量&#xff0c;范围是0-5kg&#xff0c;并将重量实时显示在LCD1602屏幕上&#xff0c;有去皮功能。代码在实物上也能运行出来&#xff01;&#xff01; 仿真截图如下&#xff1a; 继续改变重…

使用Halcon 采集图像并进行简单处理rgbl_to_gray/threshold/connection/fill_up

使用Halcon 采集图像并进行简单处理 文章目录 使用Halcon 采集图像并进行简单处理 下面介绍一个简单的采集图像的例子。在Halcon中利用图像采集接口&#xff0c;使用USB3.0相机实时拍摄图像。采集到图像后对图像进行简单的阀值分割处理&#xff0c;将有物体的区域标记出来。 &a…

JavaScript:正则表达式

JavaScript&#xff1a;正则表达式 什么是正则表达式正则表达式语法定义正则表达式判断是否有匹配的字符串查找匹配的字符串 正则表达式匹配法则元字符边界符量词字符类 什么是正则表达式 正则表达式用于匹配字符串中字符的组合模式。 正则表达式会依据其自身语法&#xff0c;…

什么是uniapp?用uniapp开发好不好用?

随着移动应用市场的持续发展&#xff0c;开发者们面临着不断增长的需求和多样化的平台选择。在这个背景下&#xff0c;UniApp 应运而生&#xff0c;成为一种跨平台开发框架&#xff0c;为开发者提供了一种高效、简便的方式来开发移动应用程序。利用 UniApp 开发应用程序可以节省…

安装最新版的 g++

下载MinGW64 GitHub下载地址 win11 64位 下载图中那个 设置全局变量 重新修改配置路径。 搞定。

LabVIEW在电机噪声与振动探测的应用

LabVIEW在电机噪声与振动探测的应用 硬件部分是电机噪声和振动测试分析系统的基础&#xff0c;主要由三大核心组件构成&#xff1a;高灵敏度振动传感器、先进的信号调理电路和高性能数据采集卡。这些设备协同工作&#xff0c;确保了从电机捕获的噪声和振动信号的准确性和可靠性…

华为无线AC内三层漫游配置详解

重要说明 1、在一台ac中实现三层漫游 2、ac和核心的互联vlan和ap的管理vlan是同一个广播域&#xff0c;可以不用配option 43 3、直接转发模式&#xff0c;ac上可以不起业务vlan&#xff0c;ac和核心交换机上可以只放行一个互联vlan 10 4、ac上要启两个vap魔板&#xff0c;两个…

Miniconda 3 | 出发,探索Python

介绍 Miniconda 是 Anaconda 的精简版本&#xff0c;是一个轻量级的 Python 包管理工具和环境管理工具。 优势和功能主要包括&#xff1a; 轻量级和快速安装&#xff1a; Miniconda 相比 Anaconda 更小巧&#xff0c;只包含最基本的工具和包管理功能。安装速度更快&#xff0c…

ubuntu20部署Bringing-Old-Photos-Back-to-Life

环境准备&#xff1a; ubuntu20.04 Python 3.8.10 首先将微软的「Bringing-Old-Photos-Back-to-Life」库 clone 到本地&#xff1a; git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git cd Face_Enhancement/models/networks/ git clone https:/…

C#高级 08Json操作

1.概念 Json是存储和交换文本信息的语法。类似于XML。Json比XML更小、更快、更易解析。Json与XML一样是一种数据格式。Json是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。Json采取完全独立于语言的文本格式&#xff0c; 但是也使用了类似于C语言的习惯。这些特性使…

Python中matplotlib库的使用1

1 matplotlib库简介 matplotlib是一个数学绘图库&#xff0c;可以将数据通过图形的方式显示出来&#xff0c;也就是数据可视化。 2 matplotlib库的安装 2.1 打开cmd窗口 点击键盘的“Win”“R”键&#xff0c;在弹出的“运行”对话框的“打开”栏中输入“cmd”&#xff0c;…

模板 BIEE(二):Web日志从分析出发,在web页查看取数的sql方法

1 说明 1.1 环境 BIEE: Oracle Business Intelligence Enterprise Edition(Oracle商业智能企业版) 版本: OBIEE 12c Server 版本: 基于Oracle Analytics Server 6.4.0 版本 模板: 制造→生产成本→按前 10 个 GL 帐户列出的生产成本 1.2 背景 由《模板 BIEE (一):…

web前端开发网页制作html/css结课作业

效果图展示&#xff1a; 注意事项&#xff1a; 引用JQuery文件地址和图片地址要更换一下。 百度网盘链接&#xff1a; http://链接&#xff1a;https://pan.baidu.com/s/1wYkmLr7csjBwQY6GmlYm4Q?pwd4332 提取码&#xff1a;4332 html界面展示&#xff1a; main.css代码部…

Papers We Love: 计算机科学研究的集结地 | 开源日报 No.131

papers-we-love/papers-we-love Stars: 76.8k License: NOASSERTION Papers We Love 是一个围绕阅读、讨论和学习计算机科学学术论文的社区。该项目作为一个目录&#xff0c;汇集了社区中一些最好的论文&#xff0c;并将分散在网络上的文件整合到一起。用户可以通过链接获取这…

count distinct在spark中的运行机制

文章目录 预备 数据和执行语句Expand第一次HashAggregateShuffle and Second HashAggregate最后结果性能原文 预备 数据和执行语句 SELECT COUNT(*), SUM(items), COUNT(DISTINCT product), COUNT(DISTINCT category) FROM orders;假设源数据分布在两个1核的结点上&#xff0…

[嵌入式专栏](FOC - SVPWM马鞍波)

文章目录 1 . 前言2 . 内容3 . 小结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 前言 SVPWM为什么是马鞍波形状&#xff0c;为什么不是正弦波&#xff0c;以下深入浅出探讨这个概念 2 . 内容 根据之前扇区判断&#xff0c;进行…

适用于 Mac 的 10 款顶级数据恢复软件分享

想要免费从Mac恢复永久删除的文件吗&#xff1f;这篇文章给你答案&#xff01; 在Mac上恢复已永久删除的文件并不难&#xff0c;只需找到合适的工具。今天&#xff0c;我们将为大家评测10款免费的Mac数据恢复软件&#xff0c;让你在拯救Mac数据时无需支付任何费用。这些软件在…