C#中as和is关键字

一. as 运算符用于在兼容的引用类型之间执行某些类型的转换。例如:

static void Main(string[] args)
{
    
object[] obj = new object[3];
    obj[
0= new class1();
    obj[
1= "hello";
    obj[
2= 10;

    
for (int i = 0; i < obj.Length; i++)
    {
        
string s = obj[i] as string;
        
if (s != null)
        {
            Console.WriteLine(s);
        }
        
else
        {
            Console.WriteLine(
"not a string");
        }
    }

    Console.ReadLine();
}

结果:

not a string

hello

not a string

 

class Base
{
    
public override string ToString()
    {
        
return "Base";
    }
}
class Derived : Base
{ }

class Program
{
    
static void Main()
    {

        Derived d 
= new Derived();

        Base b 
= d as Base;
        
if (b != null)
        {
            Console.WriteLine(b.ToString());
        }

    }
}

对于继承类,允许把子类转换成父类,但是不可以把父类转换成子类,不同类之间,值类型不可转换。

二.is检查对象是否与给定类型兼容。

例如,下面的代码可以确定对象是否为 MyObject 类型的一个实例,或者对象是否为从 MyObject 派生的一个类型:

复制代码
if (obj is MyObject)
{
}

如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true

如果已知表达式将始终是 true 或始终是 false,则 is 关键字将导致编译时警告,但是,通常在运行时才计算类型兼容性。

不能重载 is 运算符。

请注意,is 运算符只考虑引用转换、装箱转换和取消装箱转换。不考虑其他转换,如用户定义的转换。

is 运算符的左侧不允许使用匿名方法。lambda 表达式属于例外。

 

class MyQuickSort
{
    
static void Main(string[] args)
    {
        class2 c2 
= new class2();

        
if (c2 is class1)
        {
            Console.WriteLine(
"Yes");
        }
        
else
        {
            Console.WriteLine(
"No");
        }

        Console.ReadLine();
    }
}

class class1
{
    
public override string ToString()
    {
        
return "";
    }
}

class class2:class1
{

}

 

结果:Yes

 




 

转载于:https://www.cnblogs.com/haiyang1985/archive/2009/03/12/1410023.html

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

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

相关文章

c#小技巧

1.将一个Form显示在另一个Form里面添加一个Panel控件到FormA中&#xff0c;设置FormB的TopLevel属性为false FormB.TopLevel false;FormA.Panel1.Controls.Add(FormB);FormB.Show();2.求一串混合字符的长度&#xff08;中英文相间的&#xff09; stringstr "hello world 时…

SQL Server默认1433端口修改方法

SQL Server默认端口1433端口并不是十分的安全&#xff0c;需要将SQL Server默认端口进行更改&#xff0c;在更改之前&#xff0c;让我们先了解一下什么是1433端口。 什么是1433端口 1433端口&#xff0c;是SQL Server默认端口&#xff0c;SQL Server服务使用两个端口&#xff1…

相亲有风险,且行且珍惜!| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅

中国科学院大学计算机学院夏令营,中国科学院大学2018年全国大学生“软件与网络”夏令营通知...

中国科学院软件研究所(以下简称“软件所”)将于2018年7月9--13日(暂定)在北京举办中国科学院大学2018年全国大学生“软件与网络”夏令营。“软件与网络”夏令营已成功举办了五届。夏令营活动旨在为高校优秀大学生提供了解中科院和软件所的机会&#xff0c;通过专题报告、学科及…

netcore一键nssm发布为windows服务

AntDeploy是我开发一款开源一键部署工具包功能一览&#xff1a;docker容器一键部署docker镜像一键发布支持iis一键部署windows服务一键部署linux服务一键部署支持增量发布支持一键回滚支持点火支持选择特定文件发布支持查看发布记录一个issue前两天有一个使用者给我反馈了一个i…

算法的力量(李开复)

算法的力量 算法是计算机科学领域最重要的基石之一&#xff0c;但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门&#xff0c;就产生了一种误解&#xff0c;认为 学计算机就是学各种编程语言&#xff0c;或者认为&#xff0c;学习最新的语…

冒名者还是重名?疑惑中!

虽然已经算是离开存储行业了&#xff0c;但是还是偶尔去存储行业的专业中文网站瞄上几眼&#xff0c;还是很关注存储行业的发展。今天早上无意中打开Dostor([url]http://www.dostor.com[/url])&#xff0c;看到前段时间讨论的关于IBM存储价值的问题又重新归来&#xff0c;如下所…

Oracle CRS stack is already configured and will be running under init(1M)

REDHAT 4 重装ORACLE 10G RAC 安装完CRS后跑root.sh脚本一闪而过&#xff0c;提示CRS stack is already configured该问题可以通过root用户在每个节点上删除/etc/oracle/scls_scr/rac1/oracle/cssfatal 文件即可转载于:https://blog.51cto.com/803517/1372474

过了双十一之后的你。。| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源 阿粪青&#xff0c;侵权删&#xff09;

Asp.Net Core 中如何设置 IP 白名单

咨询区 MartinM&#xff1a;我想在一个web站点中实现ip白名单功能&#xff0c;在 MVC 时代我只需要在 web.config 中添加如下配置即可。<security><ipSecurity allowUnlisted"false" denyAction"NotFound"><add allowed"true" ip…

计算机专业考研末流211和双非,211大学考985研究生难吗,如何看待本科985学生读研去211学校?...

今天小编先给大家讲一下关于考研的一些事情&#xff0c;我发现很多同学对于考研还是云里雾里的&#xff0c;连考研有哪些科目都不清楚。211大学考985研究生难吗对于考研&#xff0c;小编认为选择比努力重要&#xff0c;动力很大程度决定了你的结果&#xff0c;希望通过211大学研…

失业、创业。。。

在这个经济危机的时候&#xff0c;突然遭遇失业。呵呵&#xff0c;&#xff0c;暂且不说失业的原因了。当然这样的事情可能每天多发生。在一个企业里面待的时间长了对自己的发展未必是好事。在目标我待了两年&#xff0c;突然出来以后发现自己多难以适应这外面的世界。就像井底…

Exchange server 2007 出现“0x8004010F”错误的解决办法

环境&#xff1a; 服务器&#xff1a;Exchange server 2007 客户端&#xff1a;outlook2003或outlook2007 在outlook中通过MAPI方式访问Exchange server&#xff0c;在点击"发送接收"后出现0x8004010F的错误。 -------------------------------------------------- 1…

Hello Blazor:(7)WebAssembly、Server模式你选哪种?小孩子才做选择!我用混合模式...

在上次的文章中&#xff0c;我们介绍了“Blazor WebAssembly和Blazor Server的区别”。它们各有优缺点。Blazor WebAssembly的优势在于运行期间可以和服务器无交互&#xff0c;但是需要长时间下载资源&#xff0c;而Blazor Server则首次加载速度非常快&#xff0c;但是必须和服…

一生只有43年,喜欢泡妹打架,却凭借一篇文章震惊世界,跻身一流数学家

全世界只有3.14 %的人关注了青少年数学之旅不会做就别乱套我洛必达的公式!——节选自《数学之旅 闪耀人类的54个数学家》众所周知&#xff0c;求极限是高等数学中最重要的内容之一&#xff0c;而洛必达法则将对原式的求导转化成了导函数形式的问题&#xff0c;这就大大简化了一…

ORACLE 常用函数

好像ORACLE的资料比较少,把ORACLE的常用函数写下,以备一时忘记查看用...1.INITCAP 返回字符串并将字符串的第一个字母变为大写; SQL>selectinitcap(smith) upp fromdual;-----Smith2.CONCAT 连接两个字符串; SQL>selectconcat(010-,88888888)||转23高乾竞电话 fromdual;-…

计算机三级网络技术分值占比,大一能考计算机三级吗?计算机三级考试题型分析...

原标题&#xff1a;大一能考计算机三级吗&#xff1f;计算机三级考试题型分析计算机等级考试&#xff0c;很多学生在刚刚进入大学时&#xff0c;就想把计算机三级证书拿到手。那么&#xff0c;大一能考计算机三级吗&#xff1f;计算机三级考试题型有哪些&#xff1f;下面&#…

asp.net网页上嵌入Flash显示

网页上显示Flash&#xff0c;功能实现&#xff1a; 文件格式&#xff1a;.wmv;大小&#xff1a;19,530KB;长度&#xff1a;00:27:39&#xff1b;还包含JavaScript与用户控件等文件。 下载地址&#xff1a;http://download.cnblogs.com/insus/ASPDOTNET/Flash.zip转载于:https:/…

DTO 和 POCO(或 POJO)有什么区别

DTO 和 POCO&#xff08;或 POJO&#xff09;有什么区别原文链接&#xff1a;https://ardalis.com/dto-or-poco/作者&#xff1a;Ardalis Steve在讨论 .NET 和 C# 中的软件开发时经常出现的两个术语是 DTO 和 POCO。一些开发人员交替使用这些术语。那么&#xff0c;DTO 和 POCO…

Nginx server之Nginx作为反向代理服务器

2019独角兽企业重金招聘Python工程师标准>>> 一&#xff1a;Nginx介绍 1.Nginx简介&#xff1a;nginx [engine x]是一个俄罗斯人编写的HTTP和反向代理服务器&#xff0c;另外它也可以作为邮件代理服务器。 它已经在众多流量很大的俄罗斯网站上使用了很长时间&#x…