C#将值从一个方法传递到另一个方法
我在结果中收到错误代码。 代码如下。 我基本上试图从SingleColumn
方法获取数据集并在SMA
方法中使用它。 但是我得到的结果在目前的背景下并不存在。
static public void SMA() { double[] closePrice = results.ToArray();
您可以在下面看到SingleColumn
和部分SMA
代码。
#region Single Column //static public double results; static public void SingleColumn(IEnumerable strs, int highNum) { #region spilt data to columns Console.WriteLine("Single Column Query:"); var columnQuery = from line in strs let elements = line.Split(',') select Convert.ToDouble(elements[highNum]); var results = columnQuery.ToList(); double[] closePrice = results.ToArray(); #endregion #region max, min, avg double average = results.Average(); double max = results.Max(); double min = results.Min(); Console.WriteLine("High: {0}: Low: {1}: Average: {2:0.00}", max, min, average); #endregion } #region Strategy Code SMA static public void SMA() { double[] closePrice = results.ToArray(); int TOTAL_PERIODS = closePrice.Length; double[] output = new double[TOTAL_PERIODS]; int begin; int length; for (int i = 0; i < closePrice.Length-TOTAL_PERIODS; i++) //had to change from -1 to -TOTAL_PERIODS { closePrice[i] = (double)i; } TicTacTec.TA.Library.Core.RetCode retCode = Core.Sma(0, closePrice.Length-1, closePrice, PERIODS_AVERAGE, out begin, out length, output);
你有一些选择:
- 让
SingleColumn
返回results
并将其作为参数添加到SMA
- 使
results
成为类的一个字段,以便共享。
选项1.更清晰,因为它强制呼叫者首先调用SingleColumn
(或者自己提出一个列表)
static public double[] SingleColumn(IEnumerable strs, int highNum) { ... return closePrice; } #region Strategy Code SMA static public void SMA(double[] closePrice) { int TOTAL_PERIODS = closePrice.Length; double[] output = new double[TOTAL_PERIODS]; ... }
请注意,我将输出/输入从result
更改为closePrice
因为它只是将其转换为List并返回。 将它留作double[]
。 您也可以通过使用ToArray
而不是使用ToList
然后使用ToArray
来稍微清理代码。
你应该使用静态变量。
private static IEnumerable result;
然后在方法SingleColumn中将columnQuery.ToList()设置为此变量
C#中的每个变量都存在于由花括号定义的范围内。 在您的情况下,变量结果在SingleCloumn范围内。
public static void SingleColumn(IEnumerable strs, int highNum) { }
要在另一个范围中使用结果,可以将“result”作为全局变量。 我可以看到你已经注释掉了
//static public double results;
首先取消注释并删除var
var results = columnQuery.ToList();
希望这可以帮助。
上述就是C#学习教程:C#将值从一个方法传递到另一个方法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/949897.html