簡體   English   中英

內聯引用類型的方法?

[英]Inline reference types to methods?

我正在使用包含引用類型方法的API。 我並不總是需要將信息傳遞給方法。 有什么方法可以內聯傳遞默認值或空值?

我目前正在做什么:

MyObject obj = null;
MyMethod(ref obj);

我想做的是這樣的:

MyMethod(ref null);

我了解為什么這行不通,但卻可以說明要點。

您不能修改null 聲明為ref (或out )的參數必須命名為變量。 null是一個值。

不是引用類型,而是按引用傳遞參數。 這意味着MyMethod可以修改對obj的引用。

該API可能期望給調用者一些東西。 仔細閱讀文檔以查看期望的內容。

用我的最佳猜測,當調用者是ref時,調用者應始終為其提供一個值。 這樣,該方法可以根據需要使用它。 否則,該方法應將其聲明為out

null是一個值... Ref關鍵字意味着您應該將引用傳遞給某個實例(通常只是一個變量)而不是值。 這就是為什么當方法期望引用一個變量時,它不接受null 例如:

void A(ref string str)  // expects reference not value
{
} 

void A(string str)  // expects value not reference
{
} 

創建不帶參數的第二種方法:

private void MyMethod()
{
    MyObject notNeeded = null;
    MyMethod(ref notNeeded);
}

但是,正如其他人已經提到的那樣,如果此方法不需要始終使用給定的引用,則您的設計似乎存在問題。 也許您應該考慮您的方法在做什么,並且可能將其拆分為多個方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM