我有下一个代码:
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 并忽略返回。除非您添加更多逻辑或自定义错误消息,否则无需进行检查并引发自己的异常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)