使用As关键字v显式定义接口

时间:2018-02-13 14:02:34

标签: c#

我正在看一些像这样的代码:

var Person = new Person() as IPerson;

执行上述操作是否有任何好处:

IPerson IPerson = new Person();

我能看到的唯一好处是As关键字允许您在编码时遵循var约定。通常的做法是使用像这样的as关键字来遵循var约定还是有其他好处?

我读过这篇文章:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/as。如果我有一个对象(如示例中所示),我理解使用As的好处,但是我看不到上面代码的任何好处,所以我必须遗漏一些东西。

1 个答案:

答案 0 :(得分:0)

如果类已经实现了接口,则使用as没有任何好处。实际上不会发生运行时转换操作(它被编译器优化)只有类型将用于推断变量的类型。

如果您在运行时不知道对象的类型

,那么

As会有一个好处

object p = new Person();
object o = "Test";
var pp = p as IPerson // will not be null, at runtime p will actually contain a person (even if it declared as object)
var oo = o as IPerson // will be null because the o is actually a string