C# as和is是什么鬼

news/2024/7/4 0:50:49 标签: ASP.NET, c#, as, class
class="tags" href="/tags/AS.html" title=as>ass="baidu_pl">
class="tags" href="/tags/AS.html" title=as>ass="article_content clearfix">
class="tags" href="/tags/AS.html" title=as>ass="htmledit_views">

class="tags" href="/tags/AS.html" title=as>ass="language-csharp">       //使用is
        public void TestIs()
        {
            object obj = new object();
            //1.判断类型是否相同
            if (obj is Clclass="tags" href="/tags/AS.html" title=as>assFg)
            {
                //如果obj是Clclass="tags" href="/tags/AS.html" title=as>assFg说明转换成功
                //2.第二次强制转换
                Clclass="tags" href="/tags/AS.html" title=as>assFg fg = (Clclass="tags" href="/tags/AS.html" title=as>assFg)obj;
            }
            else
            {
                //类型转换失败
            }
        }

class="tags" href="/tags/AS.html" title=as>ass="language-csharp">        //使用class="tags" href="/tags/AS.html" title=as>as
        public void TestAs()
        {
            object obj = new object();
            //这里只需要一次转换
            Clclass="tags" href="/tags/AS.html" title=as>assFg fg = obj class="tags" href="/tags/AS.html" title=as>as Clclass="tags" href="/tags/AS.html" title=as>assFg;
            if (fg == null)
            {
                //像Clclass="tags" href="/tags/AS.html" title=as>assFg这样的类型转换失败,失败默认为null
            }
            else
            {
                //非空说明转换成功
            }
        }

is顾名思义:是【is前面的对象类型是否和其后面的对象类型一致,是返回true否则false,判断后转换】

class="tags" href="/tags/AS.html" title=as>as顾名思义:像【class="tags" href="/tags/AS.html" title=as>as前面的对象类型像后面的对象类型一样,转换后判断

相同点:都是强制类型转换的操作符

不同点

1. is从判断到转换需要两次操作、效率较低

2. class="tags" href="/tags/AS.html" title=as>as直接转换就是执行一次操作,能转则转,不能则为null,安全转换永远不抛出异常
所以class="tags" href="/tags/AS.html" title=as>as相比is安全、效率高



http://www.niftyadmin.cn/n/1727914.html

相关文章

SCROLLINFO结构详解

在刚开始使用SCROLLINFO结构时感觉很不顺手,尤其其中的成员fMask理解不太深刻,经过查询资料才理解一二。 在使用滚动条功能时,如果要设置它的范围和位置可以用以前的函数,例如:SetScrollRange()、 SetScrollPos()、Get…

ERA5再分析资料下载

最近使用分辨率更高的ERA5再分析资料,分辨率为0.25x0.25,记录一下下载的过程。 1. 注册登录 首先搜索ERA5,打开ERA5网站。 需要登录账号,没有账号的先注册。 1)填写信息 提交注册后网站提示将发送邮件给你填写的邮…

C#如何判断是web程序还是winform

/// <summary>/// 判断是否是web程序/// </summary>/// <returns>true&#xff1a;是&#xff0c;false&#xff1a;winform</returns>public bool IsWebApp(){bool flag false;if (HttpContext.Current ! null){flag true;}//否则是winform程序retu…

Python数据分析与挖掘

1. 数据读取保存 1.1 pandas数据读取 读取Excel:read_excel() df_excel pd.read_excel(‘data.xlsx’, sheet_name’TestData’) # 默认sheet1保存Excel:to_excel() df_excel.to_excel(‘data_new.xlsx’) # 文件存在&#xff0c;则覆盖原来的在同一个Excel文件写入多个…

VC 中窗口的销毁

基础知识很重要&#xff0c;Win32中的窗口句柄和MFC窗口类对象的2个概念。前者被后者包装了起来。 先看下MSDN中的TN017中的文章 In the case of C Windows objects that do perform auto-cleanup, you must callDestroyWindow. If you use operator delete directly, the MFC …

python使用双线性插值计算网格内数据

最近在处理再分析资料网格数据时&#xff0c;需要用到插值方法&#xff0c;双线性插值速度比较快&#xff0c;所以考虑双线性插值方法。 双线性插值&#xff0c;故名思义就是在x和y方向分别进行线性插值。双线性插值一般用于图像处理&#xff0c;对一个个像素块进行线性插值。…

C#如何判断是哪个类的那个方法调用了当前方法

平常我们写了一个类&#xff0c;目的是让所有的项目或类来调用&#xff0c;此时我们写生成日志&#xff0c;要明确是哪个类中的那个方法来调用的&#xff0c;以便后面好查询&#xff0c;保留详细的记录。 public static LogInfo Instance(string path){StackTrace trace new S…