none
void 多層式參數傳遞的問題 RRS feed

  • 問題

  • 大家好,我最近遇到一個問題,我將原先的程式分成好幾個層的function來進行處理,其中的參數輸入是固定的,

    例如

    public static void Atmosphere(double alt, double sigma, double delta, double theta)

    當主程式只有呼叫一層的function時,alt、sigma、delta以及theta在function運算後,主程式的alt、sigma、delta以及theta也會跟著變動,

    但是我主程式呼叫多層的function,像是Main->Atmosphere->something時,alt、sigma、delta以及theta在something運算時回到

    Atmosphere後無法進行修改的動作。請問這應該要怎樣處理?

    謝謝。

    2015年12月22日 上午 06:28

解答

  • 不太了解你所謂運算時 回到Atmophere後無法進修改的動作?!?!

    如果你是在 四個變數在something結束後,又要保留運算後的內容 繼續執行,可以用 ref (C# 參考) 這個。

            static void Main(string[] args)
            {
                Atmosphere(1.2, 1.2, 1.2, 1.2);
            }
    
            public static void Atmosphere(double alt, double sigma, double delta, double theta)
            {
                Something(ref alt, ref sigma, ref delta, ref theta);
    
                //..繼續對alt, sigma, delta, theta 執行運算
            }
    
            private static void Something(ref double alt, ref double sigma, ref double delta, ref double theta)
            {
                //..do something
            }



    2015年12月22日 上午 06:39

所有回覆