2012-02-16 37 views

回答

1

兩者都向調用者指示該方法可以修改參數的值。 out參數必須在方法內初始化,而參數ref可能在外部初始化。這基本上是一個合同。當你看到這需要一個out參數的方法這意味着,調用者可以調用它不初始化值,並確保其內部就會被初始化:

Foo foo; 
SomeMethod(out foo); 
// at this stage we know that foo will be initialized 

而與裁判:

Foo foo; 
SomeMethod(ref foo); // compile time error 

這是來電者的責任調用方法前初始化變量:

Foo foo = new Foo(); 
SomeMethod(ref foo); // ok 
1

報價從here

out關鍵字導致參數通過引用傳遞。這是類似於ref關鍵字的 ,但ref需要變量 在傳遞之前被初始化。

一些方法,如Int32.TryParse()使用out參數,因此將一個單位化變量傳遞給它。

相關問題