跳至內容

C# 程式設計/關鍵字/ref

來自華夏公益教科書,開放的書籍,開放的世界

ref 關鍵字明確指定變數應以引用方式而不是方式傳遞。

開發人員可能希望以引用方式傳遞變數,特別是在值型別的情況下。如果變數以引用方式傳遞,實際上只會將指標傳送到函式,從而減少方法呼叫的成本,因為方法呼叫通常會涉及複製大量資料,而 C# 在通常傳遞值型別時會這樣做。

以引用方式傳遞變數的另一個常見原因是讓被呼叫方法修改其值。由於允許這樣做,C# 始終強制指定以引用方式傳遞的值,即使在方法呼叫中也是如此,而許多其他程式語言則沒有這樣做。這使開發人員能夠輕鬆地識別程式碼中可能暗示型別的值在方法中已更改的位置,這在分析程式流程時非常有用。

以引用方式傳遞值並不意味著被呼叫方法必須修改該值;有關此問題,請參閱out 關鍵字。

以引用方式傳遞要求傳遞的變數已初始化。

以下是以引用方式傳遞變數的示例

void CallingMethod()
{
    int i = 24;
    if (DoubleIfEven(ref i))
        Console.WriteLine("i was doubled to {0}", i); // outputs "i was doubled to 48"
}

bool DoubleIfEven(ref int iValue)
{
    if (iValue%2 == 0)
    {
        iValue *= 2;
        return true;
    }
    return false;
}



C# 關鍵字
abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using var virtual
void volatile while
特殊的 C# 識別符號(上下文關鍵字)
add alias async await dynamic
get global nameof partial remove
set value when where yield
上下文關鍵字(用於查詢)
ascending by descending equals from
group in into join let
on orderby select where
華夏公益教科書