这两种类型之间的区别是什么?

SomeClass sc = (SomeClass)SomeObject;
SomeClass sc2 = SomeObject as SomeClass;

通常,它们不都应该显式转换为指定的类型吗?

推荐答案

如果源类型不能转换为目标类型,前者将抛出异常.后者将导致sc2为空引用,但没有例外.

[编辑]

我最初的答案当然是最显著的区别,但作为Eric Lippert points out,这并不是唯一的区别.其他差异包括:

  • 不能使用'as'运算符强制转换为不接受'null'作为值的类型
  • 你不能用"as"来表示convert件事,比如用数字来表示不同的事物(例如,用float来表示int).

最后,使用"as"与CAST操作符相比,您还可以说"我不确定这是否会成功."

.net相关问答推荐

从Couchbase删除_txn文档的推荐方法?""

Msbuild try 构建 msbuild.exe 而不是我的 .csproj 文件

向从 .NET 序列化的对象添加 Xml 属性

如何在没有抽象基类的情况下强制覆盖后代中的方法?

如何获取 Sql Server 数据库中所有模式的列表

.NET 的 `Array.Sort()` 方法使用的排序算法是稳定的算法吗?

通用枚举到int的C#非装箱转换?

HttpClient 和使用代理 - 不断得到 407

为什么 LINQ .Where(predicate).First() 比 .First(predicate) 快?

Microsoft.Practices.ServiceLocation 来自哪里?

如何在不丢失数据的情况下重命名 Entity Framework 5 Code First 迁移中的数据库列?

ASP.NET Core 等效于 ASP.NET MVC 5 的 HttpException

多个添加的实体可能具有相同的主键

解密 .NET clr20r3 异常参数 P1..P10

设置 System.Drawing.Color 值

如何在 C# 中以编程方式安装 Windows 服务?

ReaderWriterLockSlim 什么时候比简单的锁更好?

获取系统中已安装的应用程序

DataContractSerializer vs XmlSerializer:每个序列化器的优缺点

枚举和匹配属性的 C# 命名约定