none
delphi 改寫為c#, c#有沒有相似於delphi record(記錄型態)和指標的用法 RRS feed

  • 問題

  • 各位大大好~~

    希望可把下列delphi的程式碼改寫為c#

    裡頭有record和指標

    c#有沒有record的用法呢

    @@謝謝各位大大的幫忙哦


    Code Snippet

    type
      PBOMChild = ^BOMChild; 
      BOMChild  = record      
        ID        : String;    

        Version   : String;
        P_Version: String;
        Style     : Char;      
        Qty       : Currency ;
      end;

     

     

    2007年4月9日 上午 03:21

解答

  • HI,

     

    在C#中可以使用struct達到Delphi的Record 相同的功能, 另外C#的物件變數其實就是指標, 只是看不到指標的符號

     

    tihs

    2007年4月9日 上午 09:34
  • HI,

     

    1. 物件變數指的就是資料型態為類別的變數, 這種變數的內容是位址, 即物件所在的位址

    2. 型態為結構(經由struct宣告得到的型態)的變數會以CALL BY VALUE的方式傳給函數當做參數

    3. 型態為類別(經由struct宣告得到的型態)的變數會以CALL BY VALUE的方式傳給函數當做參數, 但是因為 

        被呼叫的函數會收到物件的位址, 所以對物件操作, 有能力改變物件的狀態

     

    書上講的就是這個意思, 至於要如何宣告您需要的PBOMChild結構, 我手頭上沒有程式可以試驗宣告好的東西是否正確, 您可以先自行試作看看, 有問題再來討論

     

    tihs

    2007年4月10日 上午 05:57

所有回覆

  • HI,

     

    在C#中可以使用struct達到Delphi的Record 相同的功能, 另外C#的物件變數其實就是指標, 只是看不到指標的符號

     

    tihs

    2007年4月9日 上午 09:34
  • 要怎麼做到下面的功能呢

    大大....可以說詳細點嗎...

    所謂的物件變數是什麼呢....

    在書上看到:

    1.我們將一個結構變數指派給另一個結構變數或做為參數傳遞給方法時,所有成員的值會複制到新的結構變數或複製到方法內

    2.我們將一個物件變數指派給另一個物件變數或做為參數傳遞給方法時,則只會複製參考指標

    1.指的是marshal.structruetoptr和Marshal.PtrToStructure這個嗎

    如果不是,指的是什麼?

    如何做到2那樣呢....

    謝謝各位大大~~

     

    type end is DELPHI語法

    type

      PBOMChild = ^BOMChild; 

      BOMChild  = record      

        ID        : String;

        Version   : String;

        P_Version: String;

        Style     : Char;      

        Qty       : Currency ;

      end;

     

    若要做到宣告PBOMChild,

    就可

     

    PBOMChild pChild;

    for (int i=0;i<3;i++)

    {

    new pChild;

    pChild.ID=i.toString;

    pChild.Version=i.toString;

    pChild.P_Version=i.toString;

    pChild.Style='a';

    pChild.Qty=i;

    list.add(pChild);

    }

     

    取值時..

    for (int i=0;i<list.count-1;i++)

    {

    pChild=list.item(i);

    messagebox.show(pChild.ID);

    }

    2007年4月10日 上午 01:06
  • HI,

     

    1. 物件變數指的就是資料型態為類別的變數, 這種變數的內容是位址, 即物件所在的位址

    2. 型態為結構(經由struct宣告得到的型態)的變數會以CALL BY VALUE的方式傳給函數當做參數

    3. 型態為類別(經由struct宣告得到的型態)的變數會以CALL BY VALUE的方式傳給函數當做參數, 但是因為 

        被呼叫的函數會收到物件的位址, 所以對物件操作, 有能力改變物件的狀態

     

    書上講的就是這個意思, 至於要如何宣告您需要的PBOMChild結構, 我手頭上沒有程式可以試驗宣告好的東西是否正確, 您可以先自行試作看看, 有問題再來討論

     

    tihs

    2007年4月10日 上午 05:57
  • 使用struct與list解決了

    謝謝大大^^

     

    2007年4月14日 上午 08:00