当前位置: 首页 > news >正文

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(    //提示不兼容信息"对象与指定类型不兼容", "提示!");}}   }
}

三、生成

 

 

 

http://www.lryc.cn/news/269634.html

相关文章:

  • AI时代下,如何看待“算法利维坦”?
  • Linux上管理不同版本的 JDK
  • 直方图与均衡化
  • Java——猫猫图鉴微信小程序(前后端分离版)
  • PiflowX组件-ReadFromKafka
  • Ubuntu 安装MySQL以及基本使用
  • 基于Freeswitch实现的Volte网视频通知应用
  • 怎么实现Servlet的自动加载
  • 15. Mysql 变量的使用
  • 为什么ChatGPT采用SSE协议而不是Websocket?
  • Elasticsearch:使用 ELSER v2 文本扩展进行语义搜索
  • Matlab:BP神经网络算法,二叉决策树
  • Python实现员工管理系统(Django页面版 ) 七
  • 听GPT 讲Rust源代码--src/tools(34)
  • k8s的陈述式资源管理(命令行操作)
  • uniapp uview裁剪组件源码修改(u-avatar-cropper),裁出可自定义固定大小图片
  • 【机器学习前置知识】Beta分布
  • Notepad++批量更改文件编码格式及文档格式
  • Linux驱动开发学习笔记6《蜂鸣器实验》
  • 鸿蒙(HarmonyOS 3.1) DevEco Studio 3.1开发环境汉化
  • 毫米波雷达:从 3D 走向 4D
  • CENTOS docker拉取私服镜像
  • 【前端面经】即时设计
  • 前端三件套html/css/js的基本认识以及示例程序
  • 云计算:OpenStack 配置云主机实例的存储挂载并实现外网互通
  • python/selenium/jenkins整合
  • 华为路由器ACL操作SSH接口
  • Flutter 三点三:Dart Stream
  • centos 防火墙 设置 LTS
  • SAP缓存 表缓存( Table Buffering)