2012-01-08 11 views
0

でASPXページの参照を取得し、私が持っているGlobal.asaxルートの簡単なURLマッピングのためのLink.csクラスでこのメソッド:別のクラスまたはクラスライブラリ例えば

public static string ToCategory(string categoryName, ushort pageNumber, Page page) 
{ 
    if (pageNumber == 1) 
     return page.GetRouteUrl("category", new { CategoryName = categoryName }); 
    else 
     return page.GetRouteUrl("category-page", new { CategoryName = categoryName, Page = pageNumber }); 
} 

GetRouteUrl()方法はPageクラスの一部であり、私はオブジェクトを価値として渡します。理論的には、それは参照を渡すよりも全体をコピーし、より多くのメモリを使用します...または私は間違っていますか?これを行う際に何らかのパフォーマンス上のオーバーヘッドはありますか?ありがとう。

答えて

0

メソッドパラメータとして渡されるオブジェクト(別名参照型パラメータ)は、元のオブジェクトへの参照として常に渡され、追加のメモリは使用されません。

これはオブジェクトをrefとして渡す以外のコンセプトであることに注意してください。これは基本的にオブジェクトのメモリ位置へのポインタであり、メソッドによって変更できます(たとえば、新しいクラスを作成してパラメータに割り当てる)。

一方、プリミティブデータ型(intなど)は、デフォルトでは値によって渡されるため、追加のメモリが消費されます。

This MSDN documentationには、より詳細な説明と例が含まれています。