2013-04-09 83 views
0

使用下面的代碼,我明白getStringAgain(classOne.str1)比getAstring(classOne)要好,因爲我們只想傳入因數據隱藏/封裝等原因而需要的東西。傳遞對象vs字符串作爲方法參數

但是,是否有任何記憶好處?顯然,classOne對象比單個字符串大,但是因爲在這兩種方法中,我們只傳入一個對象的引用,因此只有引用被複制到堆棧中,它們在內存方面效率如何?

Class ClassOne() 
{ 
    public string str1 = "string1"; 
    public string str2 = "string2"; 
} 

Class ClassTwo() 
{ 
    public ClassTwo() 
    { 
     ClassOne classOne = new ClassOne(); 
     string a = getAstring(classOne); 
     string b = getStringAgain(classOne.str1) 
    } 

    private string getAstring(ClassOne classOne) 
    { 
     return classOne.str1; 
    } 

    private string getStringAgain(string str) 
    { 
     return str; 
    } 
} 
+2

效率是每單位成本完成的工作的比例。在這種情況下,「高效」意味着什麼?你正在做什麼工作,你測量的是什麼成本? – 2013-04-09 05:57:26

回答

0

串和任何類是引用類型

這意味着兩個函數採取其中實際數據被保持

沒有被複制託管堆的參考。

如果你知道指針與傳遞指針基本相同。

相關問題