[英]C# return multiple values in an object
我有一個方法(AlphaCalcResult),應該返回多個值。 每個forloop都有一些邏輯,這些邏輯將值分配給List字段。 然后,我想返回結果對象,其中包含從下面描述的兩個循環生成的兩個值。 C#開發的新手,語法有問題。
我怎樣才能在下面的代碼中使用return語句呢?
public AlphaCalcResult CalculateAlpha(AlphaCalcParam param)
{
AlphaCalcResult result = new AlphaCalcResult
{
portfolios = new List<Portfolio>()
};
// Lists Portfolios & Settings
var portfolioListItem = param.portfolios.portfolioHoldings;
var scoreListItem = param.settings.grossAlphas;
// 1. CALCULATE FUND ALPHA
for (var i = 0; i<portfolioListItem.Count; i++)
{
portfolioListItem[i].fundRating = i;
for (var j = 0; j<scoreListItem.Count; j++)
{
scoreListItem[j].fundRating = j;
if(i == j)
{
portfolioListItem[i].fundAlpha = scoreListItem[j].grossAlpha - portfolioListItem[i].fundExpenseRatio;
}
}
}
//2. CALCULATE PORTFOLIO ALPHA
var portfolioAlphaResult = param.portfolios.portfolioAlpha;
for (var i =0; i<portfolioListItem.Count; i++)
{
portfolioAlphaResult = portfolioListItem[i].fundWeight * portfolioListItem[i].fundAlpha;
};
// populate result
return result;
}
我不確定這是否真的是您在這種情況下要做的,但是您可以使用.NET 4.0+的Tuple類型返回多個值。
例如:
public Tuple<string, int> GetValues()
{
return Tuple.Create("first",2);
}
// usage:
var result = GetValues();
var theString = result.Item1;
var theInt = result.Item2;
更改此部分:
//2. CALCULATE PORTFOLIO ALPHA
var portfolioAlphaResult = param.portfolios.portfolioAlpha;
for (var i =0; i<portfolioListItem.Count; i++)
{
portfolioAlphaResult = portfolioListItem[i].fundWeight * portfolioListItem[i].fundAlpha;
(result.portfolios as List<Portfolio>).Add(new Portfolio() { portfolioAlpha = portfolioAlphaResult });
};
首先更改public IEnumerable<Portfolio> portfolios { get; set; }
public IEnumerable<Portfolio> portfolios { get; set; }
public IEnumerable<Portfolio> portfolios { get; set; }
到
public List<Portfolio> portfolios { get; set; }
因為IEnumerable
用於讀取列表,並在您的代碼中添加
//2. CALCULATE PORTFOLIO ALPHA
for (var i =0; i<portfolioListItem.Count; i++)
{
List<PortfolioHolding> list = new List<PortfolioHolding>();
list=portfolioListItem;
Portfolio port = new Portfolio();
port.portfolioIdentifier = "current";
port.portfolioAlpha = portfolioListItem[i].fundWeight * portfolioListItem[i].fundAlpha;
port.portfolioHoldings = list;
result.portfolios.Add(port);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.