如何在 C# 中 return 不同的数据类型?
how to return different datatypes in C#?
我在 C# 中有一个方法,它必须 return 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 建议的那样)或对所有其他 classes object
[= 使用基 class 24=]:
Supports all classes in the .NET Framework class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all classes in the .NET Framework; it is the root of the type hierarchy.
https://msdn.microsoft.com/en-us/library/system.object%28v=vs.110%29.aspx
@ITGuy 提到 ContentPage
是 ListPage
和 WebviewPage
共享的基础 class 所以你的代码的一个工作版本是:
private ContentPage LoadByContentType(int Param1)
{
if (Param1 == 1)
return new ListPage(Param1);
else
return new WebviewPage(Param1);
}
您可以为这两个对象创建一个公共 class 以使用枚举继承,例如安全地获取所需的对象。
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/en-us/library/t3c3bfhx.aspx
我在 C# 中有一个方法,它必须 return 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 建议的那样)或对所有其他 classes object
[= 使用基 class 24=]:
Supports all classes in the .NET Framework class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all classes in the .NET Framework; it is the root of the type hierarchy.
https://msdn.microsoft.com/en-us/library/system.object%28v=vs.110%29.aspx
@ITGuy 提到 ContentPage
是 ListPage
和 WebviewPage
共享的基础 class 所以你的代码的一个工作版本是:
private ContentPage LoadByContentType(int Param1)
{
if (Param1 == 1)
return new ListPage(Param1);
else
return new WebviewPage(Param1);
}
您可以为这两个对象创建一个公共 class 以使用枚举继承,例如安全地获取所需的对象。
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/en-us/library/t3c3bfhx.aspx