1

我正在使用一个类

public partial class CashFlowIndicator:IEnumerable
{
    public static void getCashFlowChartValues(int userid)
    {
            List<KeyValuePair<string, string>> chartValues=new List<KeyValuePair<string,string>>();
            chartValues = cashFlowChart(userid);
    }    

    public static List<KeyValuePair<string, string>> cashFlowChart(int userid)
    {
              //.............................
              //..................................
            List<KeyValuePair<string, string>> cashFlowItems = new List<KeyValuePair<string, string>>();
            cashFlowItems.Add(new KeyValuePair<string, string>(a, b));
            cashFlowItems.Add(new KeyValuePair<string, string>(c, d));
           //.....................    

            return cashFlowItems;
     }    
}

问题是在调用函数 cashFlowChart 时,变量“chartValues”没有被返回的值分配.....

有什么解决办法吗?

4

2 回答 2

1

基于方法名称 - “getCashFlowChartValues”和返回类型 - “void”,这是我的猜测 -

您需要将“chartValues”的定义移到方法之外并使其成为“静态”(如下所示):

public class CashFlowIndicator :IEnumerable
{

    static List<KeyValuePair<string, string>> chartValues;  // has been moved here from getCashFlowChartValues

    public static void getCashFlowChartValues(int userid)
    {
            //List<KeyValuePair<string, string>> chartValues=new List<KeyValuePair<string,string>>();
            chartValues = cashFlowChart(userid);
    }    

    public static List<KeyValuePair<string, string>> cashFlowChart(int userid)
    {
            //.............................
            //..................................
            var cashFlowItems = new List<KeyValuePair<string, string>>();

            cashFlowItems.Add(new KeyValuePair<string, string>(a, b));
            cashFlowItems.Add(new KeyValuePair<string, string>(c, d));
        //.....................    

            return cashFlowItems;
    }    
}
于 2012-11-13T09:39:56.327 回答
-1

您正在创建两个对象,一次在getCashFlowChartValues该行的方法中:

List<KeyValuePair<string, string>> chartValues=
                new List<KeyValuePair<string,string>>();

并在方法中一次cashFlowChart

 List<KeyValuePair<string, string>> cashFlowItems = 
                new List<KeyValuePair<string, string>>();

尝试直接调用 subfinction,如:

List<KeyValuePair<string, string>> chartValues = cashFlowChart (userid);

我不确定这会解决你的问题,但它更干净。

更新:

我刚刚测试了以下代码及其对我的工作,即使在原始版本中,当两个对象都为我工作并返回预期的输出时,我只是设置一个断点来更深入地查看,猜你会发现它的工作. 可能根据代码中的其他行,您没有得到预期的输出:

    class Program
    {
        static void Main(string[] args)
        {
            foreach (KeyValuePair<string, string> s in getCashFlowChartValues())
            {
                System.Console.WriteLine(s.Key + s.Value);
            }
            System.Console.ReadLine();

        }

        public static List<KeyValuePair<string, string>> getCashFlowChartValues()
        {
            List<KeyValuePair<string, string>> chartValues = cashFlowChart(5);
            return chartValues;
        }

        public static List<KeyValuePair<string, string>> cashFlowChart(int userid)
        {
            //.............................
            //..................................
            List<KeyValuePair<string, string>> cashFlowItems = new List<KeyValuePair<string, string>>();

            cashFlowItems.Add(new KeyValuePair<string, string>("a", "b"));
            cashFlowItems.Add(new KeyValuePair<string, string>("c", "d"));
            //.....................    

            return cashFlowItems;
        }    
于 2012-11-13T09:14:55.893 回答