相关疑难解决方法(0)

使用as关键字对C#中的泛型类型进行编译时行为冲突

尝试对无法转换的非泛型类型使用C#"as"关键字时,编译器会提供无法转换类型的错误.

但是,当对泛型类型使用"as"关键字时,编译器不会给出错误:

public class Foo { }

public class Bar<T> { }

public class Usage<T> {
   public void Test() {
      EventArgs args = new EventArgs();
      var foo = args as Foo;     // Compiler Error: cannot convert type
      var bar = args as Bar<T>;  // No compiler error
   }
}
Run Code Online (Sandbox Code Playgroud)

我在更大的代码库中发现了这种行为,其中缺少编译时错误导致运行时出现问题.

设计是否存在冲突行为?如果是这样,有没有人知道为什么?

c# generics

18
推荐指数
1
解决办法
429
查看次数

标签 统计

c# ×1

generics ×1