将对象的类型更改为其子类型并返回它
本文关键字:类型 返回 对象 | 更新日期: 2023-09-27 18:14:24
我有一个返回某种类型的Object
的方法。在接收端,我希望将该对象强制转换为它本身的类型,而不强制转换它。我可以这样做:
public static Object Method1(){
return GetObjectOfSomeType();
}
public static void Method2(){
MethodThatTakesBool((bool) Method1());
}
但是我有很多类似于Method2
的方法,我想避免每次都必须强制转换它。(它并不总是一个bool
…每次都是不同的类型。)我想做的是:
public static Object Method1(){
return (GetType()) GetObjectOfSomeType();
}
public static void Method2(){
MethodThatTakesBool(Method1());
}
如何将对象强制转换为其本身,然后将该对象作为该类型返回?我试过这个,但它不工作:
return (myObject.GetType().ToString()) myObject;
首先要注意的是,除非在编译时知道要转换的类型,否则强制转换对象是没有意义的。"静态类型")。
但是,您可以创建一个泛型方法来隐藏强制转换。它完全等同于在调用代码中进行强制转换,但它看起来像一个方法调用,而不是强制转换:static T Method1<T>() {
object res = GetObjectOfSomeType();
return (T)res;
}
下面是如何使用这个方法:
public static void Method2(){
MethodThatTakesBool(Method1<bool>());
MethodThatTakesInt(Method1<int>());
}