作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有下一个代码:
private T CreateInstance<T>(object obj) // where T : ISomeInterface, class
{
...
if (!typeof(T).IsAssignableFrom(obj.GetType())) { throw ..; }
return (T)obj;
}
能不能换成这样:
T result = obj as T;
if (result == null) { throw ..; }
return result;
如果不是 - 为什么?
最佳答案
if (!(bar is T)) { throw ..; 怎么样? }
或者,如果您不需要自己的异常消息,最简单的答案就是:
return (T)obj;
如果它不可转换,将抛出 InvalidCastException 并忽略返回的原因。除非您要添加更多逻辑或自定义错误消息,否则无需进行检查并抛出您自己的异常。
关于c# - IsAssignableFrom 或 AS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3396651/
我是一名优秀的程序员,十分优秀!