none
請問如何在 C# 在副程式中配置全域的記憶體? RRS feed

  • 一般討論

  • 我的問題程式碼如下:

    public byte[][] byte_2D_Ptn_01;
    public byte[][] byte_2D_Ptn_02;

    private void ReadPattern(String str_Script,byte[][] byte_2D)
    {

                byte_2D = new byte[str_Ary_01.Count()][];

                for (int_Loop1 = 0; int_Loop1 < str_Ary_01.Count(); int_Loop1++)
                {
                    ......
                    byte_2D[int_Loop1] = new byte[str_Ary_02.Count()];

                    .......
                }

    }

    請問該如何寫這段程式碼才能讓 byte_2D_Ptn_01 及 byte_2D_Ptn_01 在專案的其他地方使用。

    謝謝

    2016年10月5日 下午 12:43

所有回覆

  • 您這是某個DLL裡面的code嗎?

    別的專案加入參考, 就可以取到 byte_2D_Ptn_01 及 byte_2D_Ptn_02 的值。


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2016年10月5日 下午 02:09
  • 這段程式碼是我寫的,一般 Windows Form 的程式,因為要從檔案讀的命令後,需要分開來多次用RS232對某台機器下達命令,下達命令完了,再換另一台機器,所以才這樣寫,這個副程式是要簡化複雜度的,否則會變得很大,在以前是可以用指標傳入的方式任意配置,現在C#就不知道要如何辦理。


    • 已編輯 eigen_r 2016年10月5日 下午 02:16
    2016年10月5日 下午 02:14
  • Windows 的記憶體每個 Process 都是獨立的虛擬 2GB ,這是在 Win9x 以前就定義下來,到現在還沒改過。

    單一 Process 可宣告全域變數,供不同 Form / Thread / function 使用。

    從你的說法來看,應該是要宣告全域變數?


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2016年10月5日 下午 03:32
  • 我是有宣告全域變數,但是要配置記憶體的時候卻是在副程式中,雖然全域變數是可以不理會這個副程式,但是如果這樣做,副程式存在的價值就沒有了,如果我要載入兩個樣板命令,我就得寫兩個副程式,這兩個副程式的差別只在於動態二維陣列名稱不同罷了,如果要合而為一,我就發生了問題,就是如何將未配置記憶體的變數傳入副程式中進行配置,並且副程式結束後,這個動態二維陣列不會被回收。

    2016年10月5日 下午 06:30
  • 可是你 ReadPattern 裡面的變數名不一樣啊~

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2016年10月6日 下午 03:16
  • 樓主:

    嘗試創建一個靜態類+靜態變量,供全局訪問,注意提供靜態方法。


    ASP.NET Forum
    StackOverFlow
    FreeRice Donate
    Issues to report

    2016年10月7日 上午 08:08