[英]how to return different datatypes in C#?
我在C#中有一个方法,该方法必须根据输入参数返回2个不同的对象。
那怎么办?
var nextPage = new LoadByContentType(1);
await App.Navigator.PushAsync(nextPage);
private ???? LoadByContentType(int Param1)
{
if (Param1 == 1)
return new ListPage(Param1);
else
return new WebviewPage(Param1);
}
使用两种类型的通用基类型(如@Sriram Sakthivel建议),或将基类用于所有其他类object
:
支持.NET Framework类层次结构中的所有类,并为派生类提供低层服务。 这是.NET Framework中所有类的最终基类。 它是类型层次结构的根。
https://msdn.microsoft.com/en-us/library/system.object%28v=vs.110%29.aspx
@ITGuy提到ContentPage
是ListPage
和WebviewPage
共享的基类,因此您的代码的一个有效版本是:
private ContentPage LoadByContentType(int Param1)
{
if (Param1 == 1)
return new ListPage(Param1);
else
return new WebviewPage(Param1);
}
您可以为两个对象创建一个通用类,以通过枚举从中继承,例如,以安全地获取所需的对象。
public enum PageTypeEnum{ ListPage,WebviewPage};
public abstract class BasePage
{
//Common data..
public abstract PagetTypeEnum PageType{get;}
}
public class ListPage : BasePage
{
public overide PageTypeENum PageType {get{return PageTypeEnum.ListPage;}}
}
public class WebviewPage: BasePage
{
public overide PageTypeENum PageType {get{return PageTypeEnum.WebviewPage;}}
}
用法:
private static BasePage LoadByContentType(int Param1)
{
if (Param1 == 1)
return new ListPage(Param1);
else
return new WebviewPage(Param1);
}
使用输出参数
private static BasePage LoadByContentType(int Param1, out int Param2, out int Param3)
{
Param1 = 1;
Param2 = 2;
return something;
}
要调用它,您可以执行以下操作:
int int1, int2;
var something = LoadByContentType(1, out int1, out int2);
有关C#输出参数的更多信息,请访问: https : //msdn.microsoft.com/zh-cn/library/t3c3bfhx.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.