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次の行のメソッドに1つずつ、2つのオブジェクトを作成しています。

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

そして、行のメソッドに一度cashFlowChart

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

次のようにサブフィンクションを直接呼び出してみてください。

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

これで問題が解決するかどうかはわかりませんが、はるかにクリーンです。

アップデート:

次のコードとその動作をテストしました。元のバージョンでも、両方のオブジェクトが動作を停止し、期待される出力が返されました。ブレークポイントを設定して詳細を確認します。動作がわかると思います。 。コードの他の行によると、Mabyは期待される出力を取得していません。

    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 に答える