指派運算子 (c # 參考)

指派運算子 = 會將其右方運算元的值指派給其左方運算元所指定的變數、屬性索引子元素。 指派運算式的結果是指派給左方運算元的值。 右方運算元的型別必須與左方運算元的型別相同,或是會隱含地轉換成該型別。

指派運算子 = 是右向關聯,也就是表單的運算式

a = b = c

會評估為

a = (b = c)

下列範例示範將區域變數、屬性及索引子元素作為指派運算子左運算元的用法:

var numbers = new List<double>() { 1.0, 2.0, 3.0 };

Console.WriteLine(numbers.Capacity);
numbers.Capacity = 100;
Console.WriteLine(numbers.Capacity);
// Output:
// 4
// 100

int newFirstElement;
double originalFirstElement = numbers[0];
newFirstElement = 5;
numbers[0] = newFirstElement;
Console.WriteLine(originalFirstElement);
Console.WriteLine(numbers[0]);
// Output:
// 1
// 5

ref 指派運算子

從 C# 7.3 開始,您可以使用 ref 指派運算子 = ref 來重新指派 ref 區域變數ref readonly 區域變數。 下列範例示範 ref 指派運算子的用法:

void Display(double[] s) => Console.WriteLine(string.Join(" ", s));

double[] arr = { 0.0, 0.0, 0.0 };
Display(arr);

ref double arrayElement = ref arr[0];
arrayElement = 3.0;
Display(arr);

arrayElement = ref arr[arr.Length - 1];
arrayElement = 5.0;
Display(arr);
// Output:
// 0 0 0
// 3 0 0
// 3 0 5

在 ref 指派運算子的案例中,它的兩個運算元都必須是相同的類型。

複合指派

若是二元運算子 op,表單的複合指派運算式

x op= y

相當於

x = x op y

但只會評估 x 一次。

算數布林邏輯位元邏輯與位移運算子支援複合指派。

Null 聯合指派

從 c # 8.0 開始,您可以使用 null 聯合指派運算子,將右邊運算元的值指派給左邊的運算元( ??= 如果左邊運算元評估為) null 。 如需詳細資訊,請參閱 ??和?= 運算子 文章。

運算子是否可多載

使用者定義型 別無法多 載指派運算子。 不過,使用者定義型別可以定義會轉換成另一型別的隱含轉換。 如此一來,便可將使用者定義型別的值指派給另一型別的變數、屬性或索引子元素。 如需詳細資訊,請參閱使用者定義轉換運算子

使用者定義型別無法明確地多載複合指派運算子。 不過,如果使用者定義型別多載二元運算子 opop= 運算子(如果存在的話)也會隱含地多載。

C# 語言規格

如需詳細資訊,請參閱 C# 語言規格指派運算子一節。

如需 ref 指派運算子的詳細資訊 = ref ,請參閱 功能提案注意事項

另請參閱