C#中使用as关键字将对象转换为指定类型

news2025/4/23 15:39:18

目录

一、定义

二、示例

三、生成


        使用as关键字可以将对象转换为指定类型,与is关键字不同,is关键字用于检查对象是否与给定类型兼容,如果兼容则返回true,如果不兼容则返回false。而as关键字会直接进行类型转换,如果转换成功将会返回转换后的对象,如果转换不成功则不会抛出异常而是返回NULL。

一、定义

        as关键字用于引用类型之间执行转换。

        as关键字与is关键字一样都不会抛出异常,但是相比之下as关键字要更方便一些。

二、示例

        首先创建一个字符串对象,然后将字符串对象隐式转换为object类型的对象Temp_obj,使用as关键字将Temp_obj转换为字符串对象,最后检查字符串对象是否为空。如果为空,则转换不成功;如果不为空,则转换成功并执行后面的语句块。

// 使用as关键字将对象转换为指定类型
namespace _026
{
    public partial class Form1 : Form
    {
        private GroupBox? groupBox1;
        private RadioButton? radioButton3;
        private RadioButton? radioButton2;
        private RadioButton? radioButton1;
        private Label? label1;
        private Button? button1;

        public Form1()
        {
            InitializeComponent();
            Load += Form1_Load;
        }
        private void Form1_Load(object? sender, EventArgs e)
        {
            // 
            // label1
            // 
            label1 = new Label
            {
                AutoSize = true,
                Location = new Point(29, 21),
                Name = "label1",
                Size = new Size(43, 17),
                TabIndex = 0,
                Text = "将FileStream对象转换为:"
            };
            // 
            // radioButton1
            // 
            radioButton1 = new RadioButton
            {
                AutoSize = true,
                Location = new Point(180, 17),
                Name = "radioButton1",
                Size = new Size(102, 21),
                TabIndex = 1,
                TabStop = true,
                Text = "转换为object类型",
                UseVisualStyleBackColor = true
            };
            // 
            // radioButton2
            // 
            radioButton2 = new RadioButton
            {
                AutoSize = true,
                Location = new Point(180, 41),
                Name = "radioButton2",
                Size = new Size(102, 21),
                TabIndex = 2,
                TabStop = true,
                Text = "转换为Stream类型",
                UseVisualStyleBackColor = true
            };
            // 
            // radioButton3
            // 
            radioButton3 = new RadioButton
            {
                AutoSize = true,
                Location = new Point(180, 65),
                Name = "radioButton3",
                Size = new Size(102, 21),
                TabIndex = 3,
                TabStop = true,
                Text = "转换为String类型",
                UseVisualStyleBackColor = true
            };
            // 
            // groupBox1
            // 
            groupBox1 = new GroupBox
            {
                Location = new Point(0, 1),
                Name = "groupBox1",
                Size = new Size(354, 103),
                TabIndex = 0,
                TabStop = false,
                Text = "类型转换"
            };
            groupBox1.Controls.Add(radioButton3);
            groupBox1.Controls.Add(radioButton2);
            groupBox1.Controls.Add(radioButton1);
            groupBox1.Controls.Add(label1);
            groupBox1.SuspendLayout();
            // 
            // button1
            // 
            button1 = new Button
            {
                Location = new Point(137, 110),
                Name = "button1",
                Size = new Size(75, 23),
                TabIndex = 0,
                Text = "转换类型",
                UseVisualStyleBackColor = true
            };
            button1.Click += Button1_Click;
            
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(354, 141);
            Controls.Add(button1);
            Controls.Add(groupBox1);
            Name = "Form1";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "as关键字转换类型";           
            groupBox1.ResumeLayout(false);
            groupBox1.PerformLayout();
        }

        private void Button1_Click(object? sender, EventArgs e)
        {
            if (radioButton1!.Checked)                //选择转换为object类型
            {
                using FileStream Temp_filestream =    //创建文件流对象
                    new(@"d:\log.txt", FileMode.Create);
                if (Temp_filestream != null)          //判断转换是否成功
                {
                    MessageBox.Show("转换为Object成功!", "提示!");
                }
                else
                {
                    MessageBox.Show("转换为Object失败!", "提示!");
                }
            }
            if (radioButton2!.Checked)               //选择转换为stream类型
            {
                using FileStream Temp_filestream =   //创建文件流对象
                    new(@"d:\log.txt", FileMode.Create);
                object Temp_obj = Temp_filestream;
                if (Temp_obj as Stream != null)      //判断转换是否成功
                {
                    MessageBox.Show("转换为Stream成功!", "提示!");
                }
                else
                {
                    MessageBox.Show("转换为Stream失败!", "提示!");
                }
            }
            if (radioButton3!.Checked)                //选择转换为string类型
            {
                using FileStream Temp_filestream =    //创建文件流对象
                    new(@"d:\log.txt", FileMode.Create);
                object Temp_obj = Temp_filestream;
                if (Temp_obj as string != null)       //判断转换是否成功
                {
                    MessageBox.Show("转换为String成功!", "提示!");
                }
                else
                {
                    MessageBox.Show("转换为String失败!", "提示!");
                }
            }
        }
    }
}

三、生成

 

 

 

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

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

相关文章

算法逆袭之路(1)

11.29 开始跟进算法题进度! 每天刷4题左右 ,一周之内一定要是统一类型 而且一定稍作总结, 了解他们的内在思路究竟是怎样的!! 12.24 一定要每天早中晚都要复习一下 早中午每段一两道, 而且一定要是同一个类型, 不然刷起来都没有意义 12.26/27: 斐波那契数 爬…

探秘交互设计:深入了解五大核心维度!

交互式设计是用户体验(UX)设计的重要组成部分。本文将解释什么是交互设计,并分享一些有用的交互设计模型,并简要描述交互设计师通常做什么。 如何解释交互设计 交互式设计可以用一个简单的术语来理解:它是用户和产品…

Kubernetes集群部署Rook Ceph实现文件存储,对象存储,块存储

Kubernetes集群部署Rook Ceph部署Ceph集群 1. Rook Ceph介绍 Rook Ceph是Rook项目中的一个存储方案,专门针对Ceph存储系统进行了优化和封装。Ceph是一个高度可扩展的分布式存储系统,提供了对象存储、块存储和文件系统的功能,广泛应用于提供…

【Kubernetes】什么是 kubectl ?

什么是 kubectl ? 1.什么是 kubectl ?2.Kubernetes 内部结构3.Kubernetes API 的作用 1.什么是 kubectl ? 在学习如何更有效地使用 kubectl 之前,您应该对它是什么以及它如何工作有一个基本的了解。从用户的角度来看,…

Vue小练习--任务列表

这是一个非常实用的例子,主要实用的是v-model、v-on、v-for指令,javaScript的数组也会涉及一些,javaScript数组方法有很多,本文使用的添加元素和删除元素非常实用,可以记下来。 设计思路 很多例子看起来很难&#xf…

SpringMVC源码解析——DispatcherServlet的逻辑处理

DispatcherServlet类相关的结构图如下: 其中jakarta.servlet.http.HttpServlet的父类是jakarta.servlet.GenericServlet,实现接口jakarta.servlet.Servlet。我们先看一下jakarta.servlet.Servlet接口的源码如下: /*** 定义所有servlet必须实…

Java EE Servlet之服务器版表白墙

文章目录 1. 准备工作2. 约定前后端交互接口3. 编写提交消息4. 数据存入文件5. 引入数据库 1. 准备工作 我们要把表白墙程序修改成服务器版本 这样即使页面关闭, 表白墙的内容也不会丢失 此处,服务器要实现的功能,主要是两个方面: 页面加载…

CSS 动态提示框

​​ <template> <div class"terminal-loader"><div class"terminal-header"><div class"terminal-title">提示框</div><div class"terminal-controls"><div class"control close"…

Qt 5.9.4 转 Qt 6.6.1 遇到的问题总结(一)

最近公司对大家的开发的硬件环境进行了升级&#xff0c;电脑主机的配置、显示器&#xff08;两台大屏显示器&#xff09;变得的逼格高多了。既然电脑上的开发环境都需要重装&#xff0c;就打算把开发环境也升级到最新版本&#xff0c;要用就用最新版本。下面对升级后的开发环境…

数据库开发之子查询案例的详细解析

1.5 案例 基于之前设计的多表案例的表结构&#xff0c;我们来完成今天的多表查询案例需求。 准备环境 将资料中准备好的多表查询的数据准备的SQL脚本导入数据库中。 分类表&#xff1a;category 菜品表&#xff1a;dish 套餐表&#xff1a;setmeal 套餐菜品关系表&#x…

LeetCode刷题--- 黄金矿工

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述…

2017年喜茶数字营销变化

1. 什么是数字营销&#xff1f;数字化时代&#xff0c;消费者行为模式发生了哪些变化&#xff1f; 数字营销是指使用数字渠道和平台&#xff0c;通过在线手段推广产品或服务&#xff0c;与目标受众进行互动和沟通的一种营销方式。它涵盖了多种在线渠道&#xff0c;包括社交媒…

【赠书第15期】案例学Python(基础篇)

文章目录 前言 1 简介 2 功能列表 3 实现 3.1 学生类 3.2 学生管理系统类 3.3 使用示例 4 推荐图书 5 粉丝福利 前言 当涉及案例学 Python 时&#xff0c;可以选择一个具体的问题或场景&#xff0c;通过编写代码来解决或模拟这个问题。以下是一个例子&#xff0c;通过…

自动化测试系列 之 Python单元测试框架unittest

一、概述 什么是单元测试 单元测试是一种软件测试方法&#xff0c;是测试最小的可测试单元&#xff0c;通常是一个函数或一个方法。 在软件开发过程中&#xff0c;单元测试作为一项重要的测试方法被广泛应用。 为什么需要单元测试 单元测试是软件开发中重要的一环&#xf…

HackTheBox - Medium - Linux - Interface

Interface Interface 是一种中等难度的 Linux 机器&#xff0c;具有“DomPDF”API 端点&#xff0c;该端点通过将“CSS”注入处理后的数据而容易受到远程命令执行的影响。“DomPDF”可以被诱骗在其字体缓存中存储带有“PHP”文件扩展名的恶意字体&#xff0c;然后可以通过从其…

前端开发工具之HBuilder X

HBuilderX&#xff08;简称HX&#xff09;是一款由DCloud开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为前端开发者设计。它不仅是一个编辑器&#xff0c;也可以看作是一个通用的IDE&#xff0c;类似于VSCode、Sublime和WebStorm。HBuilderX支持开发各种Web项…

论文阅读——EfficientViT(cvpr2023)

EfficientViT: Memory Efficient Vision Transformer with Cascaded Group Attention 1、 从三个角度探讨如何提高vision transformers的效率&#xff1a;内存访问、计算冗余和参数使用。 2.1. Memory Efficiency 红色字体表示操作所花费的时间主要由内存访问决定&#xff0c;…

RSA加密解密——用shell加密java解密

功能描述 使用shell opensll对明文进行RSA加密&#xff0c;将密文用java的RSA工具对密文解密。这应该是全网第一个同时用到shell和java的RSA加密解密教程。中间有很多坑&#xff0c;都踩过了&#xff0c;可以放心使用代码。 正确的实现流程 shell端 首先生成公钥私钥 &…

C/C++ 对象、继承和引用

ostream和ofstream类凸现了引用的一个有趣属性。正如ofstream 对象可以使用 ostream类的方法&#xff0c;这使得文件输入/输出的格式与控制台输入/输出相同。使得能够将特性从一个类传递给另一个类的语言特性被称为继承。 简单地说&#xff0c;ostream 是基类&#xff0c;而ofs…

<软考高项备考>《论文专题 - 37 采购管理(1) 》

1 成本管理基础 1.1 写作要点 过程定义、作用写作要点、思路规划采购管理规划采购管理是记录项目采购决策、明确采购方法&#xff0c;及识别潜在卖方的过程。作用:确定是否从项目外部获取货物和服务&#xff0c;如果是&#xff0c;则还要确定将在什么时间、以什么方式获取什么…