簡體   English   中英

如何在C#中返回不同的數據類型?

[英]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提到ContentPageListPageWebviewPage共享的基類,因此您的代碼的一個有效版本是:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM