= 演算子 (C# リファレンス)= Operator (C# Reference)

代入演算子 = は、右辺オペランドの値を、左辺オペランドに指定された変数、プロパティ、またはインデクサー要素に割り当てます。The assignment operator = assigns the value of its right-hand operand to a variable, a property, or an indexer element given by its left-hand operand. 代入式の結果は、左辺のオペランドに割り当てられる値です。The result of an assignment expression is the value assigned to the left-hand operand. 右辺のオペランドの型は、左辺のオペランドの型と同じであるか、暗黙に変換できる必要があります。The type of the right-hand operand must be the same as the type of the left-hand operand or implicitly convertible to it.

代入演算子は右結合です。つまり、次の形式の式があるとします。The assignment operator is right-associative, that is, an expression of the form

a = b = c

これが次のように評価されます。is evaluated as

a = (b = c)

次の例では、ローカル変数、プロパティ、およびインデクサー要素に値を割り当てるための、代入演算子の使用方法を示しています。The following example demonstrates the usage of the assignment operator to assign values to a local variable, a property, and an indexer element:

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 代入演算子ref assignment operator

C# 7.3 以降では、ref 代入演算子 = ref を使用して、ref ローカル変数または ref 読み取り専用ローカル変数を割り当てることができます。Beginning with C# 7.3, you can use the ref assignment operator = ref to reassign a ref local or ref readonly local variable. 次の例は、ref 代入演算子の使用方法を示しています。The following example demonstrates the usage of the ref assignment operator:

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 代入演算子の場合、左辺オペランドの型と右辺オペランドの型が同じであることが必要です。In the case of the ref assignment operator, the type of the left operand and the right operand must be the same.

詳しくは、機能提案メモをご覧ください。For more information, see the feature proposal note.

演算子のオーバーロード可/不可Operator overloadability

ユーザー定義型は、代入演算子をオーバー ロードできません。A user-defined type cannot overload the assignment operator. ただし、ユーザー定義型は、別の型への暗黙的な変換を定義できます。However, a user-defined type can define an implicit conversion to another type. この方法により、ユーザー定義型の値を、別の型の変数、プロパティ、またはインデクサー要素に割り当てることができます。That way, the value of a user-defined type can be assigned to a variable, a property, or an indexer element of another type. 詳しくは、implicit キーワードに関する記事をご覧ください。For more information, see the implicit keyword article.

C# 言語仕様C# language specification

詳細については、「C# 言語仕様」の単純な代入に関するセクションを参照してください。For more information, see the Simple assignment section of the C# language specification.

関連項目See also