我创建了c#的功能来比较我项目中的价格.
public static decimal? SpecialPrice(decimal w, decimal p)
{
if (w < p)
{
return p;
}
else if (w > p && p > 0)
{
//return (w , p);
}
else
{
return w;
}
}
Run Code Online (Sandbox Code Playgroud)
我想在w> p和p> 0时返回两个变量(w和p),但我不知道怎么能像那样返回.有人知道吗?
您将多个值返回给调用代码的选择是:
基本上,#1和#2允许您使用方法参数,将值传递回调用代码.请参阅此处以获取示例和参考:
http://msdn.microsoft.com/en-us/library/ee332485.aspx(out params)
http://msdn.microsoft.com/en-us/library/14akc2c7.aspx(ref params)
对于#3,您将使用不同的返回值decimal?.例如,您可以声明一个具有两个属性的类,并返回该实例.或者返回一个List<decimal>或其他可以包含多个值的类型.
我不太清楚你的代码的意图是什么,所以你需要决定哪种方法最适合你.
在C#中,您无法从方法返回两个值.最好两个返回一个数组或一些集合类型,它允许保存多于一个的值.
也许是这样的:
public static decimal[] SpecialPrice(decimal w, decimal p)
{
if (w < p)
{
return new decimal[] { p };
}
else if(w > p && p > 0)
{
return new decimal[] { w, p };
}
else
{
return new decimal[] { w };
}
}
Run Code Online (Sandbox Code Playgroud)
如果知道在执行此方法之后哪个值是重要的,则可以使用更复杂的集合类,如Dictionary类,它允许您按名称引用其每个值.
我不会在这种情况下创建一个新的结构或类,因为我认为数组大小是一个非常简单的指示,表示在调用此方法之前和之后,类和结构将具有相同数量的变量时返回多少个值,很难说出返回了多少个值.
你可以使用Tuple:
public static Tuple<decimal?, decimal?> SpecialPrice(decimal w, decimal p)
{
if (w < p)
{
return new Tuple<decimal?, decimal?>(p, null);
}
else if(w > p && p>0)
{
return new Tuple<decimal?, decimal?>(p, w);
}
else
{
return new Tuple<decimal?, decimal?>(w, null);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15164 次 |
| 最近记录: |