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 % 的人关注了青少年数学之旅

netcore一键nssm发布为windows服务

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

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

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

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

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

失业、创业。。。

在这个经济危机的时候&#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;这就大大简化了一…

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

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

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…

为什么现在老师这么难,值得大家深思

致各位老师不知不觉&#xff0c;顶级教师圈已经陪伴大家走过3个月的时光。我们每天为教师们推送教育资讯&#xff0c;得到了许多关心和支持。为了感谢各位教师们的支持和鼓励&#xff0c;顶级教师圈今日特举办限时资源福利活动。我们精心整理了100G海量教学资源&#xff0c;包含…

学计算机要买什么样的电脑,大学开学要买电脑吗?又要买什么样的电脑?看准这些再买也不迟!...

电脑是我们生活中重要的通讯工具&#xff0c;方便了我们学习办公、工作设计、娱乐游戏&#xff0c;我们也越来越依赖电脑处理不同的事情&#xff0c;尤其是现在的开学季&#xff0c;很多准大学生都准备给自己购置一台电脑&#xff0c;但是由于自己不懂&#xff0c;买了怕被坑&a…

如果格局决定人生,那到底什么决定了格局

全世界只有3.14 %的人关注了青少年数学之旅真正决定人与人之间的差距的&#xff0c;其实是我们对事物的见识与内心的格局&#xff0c;见识的深浅决定人生的深浅&#xff0c;格局的大小决定了人生之路是宽是窄。今天给大家推荐几个有深度、有想法的公众号&#xff0c;希望能够给…

海尔微型计算机一键还原怎么操作,教你电脑一键还原怎么操作

当系统使用的时间久了&#xff0c;出现了不好修复的问题&#xff0c;可使用电脑的一键还原来解决。但一些用户不知电脑一键还原怎么操作呢?其实方法并不难&#xff0c;有需要的用户&#xff0c;请来看看下面的步骤吧一键还原又叫做一键恢复&#xff0c;计算机系统出现问题时就…

我从大厂面试中学到的关于 C# 的知识

我从工作面试中学到的关于 C# 的知识原文链接&#xff1a;https://michaelscodingspot.com/what-i-learned-about-c-from-job-interviews/作者&#xff1a;Michael Shpilt我最近参加了一些最大的科技公司的一系列工作面试。在没有透露姓名的情况下&#xff0c;我得到了世界排名…

深入浅出自定义标签(二)生成javascript

自从写了深入浅出自定义标签(一)入门之后一直没有得出时间继续写,正好这次项目中用到"自定义标签",这次的用途是通过Session中的存储的相关功能点的List,进行迭代生成javascript脚本,在前台通过javascript生成树桩结构所有的页面元素都是Html,包括javascript所以生成…

曾凭一己之力推动物理学发展,是清华大学最年轻教授,世界却欠他一个诺贝尔奖!...

全世界只有3.14 %的人关注了青少年数学之旅说起中国最牛的科学家&#xff0c;大家可能都会想起钱学森。钱学森被美国称为“一个人抵五个师”并阻止他回国的故事&#xff0c;几乎家喻户晓。钱学森但事实上&#xff0c;在中国近代&#xff0c;也有一个科学大牛&#xff0c;曾被美…