gpt4 book ai didi

c# - IsAssignableFrom 或 AS?

转载 作者:太空狗 更新时间:2023-10-29 22:15:04 25 4
gpt4 key购买 nike

我有下一个代码:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com