C#における右辺値(rvalue)と左辺値(lvalue)とは?違いをわかりやすく解説
C#では、式(expression)はその性質によって分類されます。代入演算子「=」を扱ううえで重要になるのが、左辺値(lvalue)と右辺値(rvalue)という2つの概念です。それぞれの特徴を正しく理解することで、代入文の動作やコンパイルエラーの原因が明確になります。
左辺値(lvalue)とは
lvalue(left value:左辺値)とは、代入式の左側にも右側にも記述できる式のことです。変数は典型的なlvalueであり、メモリ上の特定の場所を参照するため、そこに値を格納することができます。
右辺値(rvalue)とは
rvalue(right value:右辺値)とは、代入式の右側には記述できるものの、左側には記述できない式のことです。数値リテラルなどはrvalueに該当します。リテラルは単なる値であり、メモリ上の格納先を持たないため、代入の対象(左辺)にはなれません。
具体例で確認する
変数はlvalueであるため、代入式の左辺に置くことができます。一方、数値リテラルはrvalueであるため、代入される側(左辺)として使用するとコンパイルエラーになります。
以下は有効なC#のステートメントです。
int a = 100;
この例では、変数 a がlvalueとして左辺に置かれ、リテラル 100 がrvalueとして右辺に置かれています。このように、lvalueとrvalueの区別はC#の代入処理を理解するための基本となる概念です。
-
C#の名前空間(namespace)とは?定義方法と基本的な使い方を解説
名前空間とは名前空間(namespace)とは、ある一連の名前を別の一連の名前から分離して管理するための仕組みです。大規模なプロジェクトでは、複数の開発者が同じ名前のクラスやメソッドを作成することがあり、名前の衝突(コンフリクト)が発生する可能性があります。名前空間を使うことで、こうした衝突を防ぎ、コードを論理的に整理できます。また、.NET Framework が提供する System なども名前空間の一つであり、標準ライブラリの機能はすべて名前空間によって分類・管理されています。名前空間の定義方法名前空間の定義は、namespace キーワードで始まり、その後に名前空間名を続けて記述します
-
C#の左シフト演算子(<<)と右シフト演算子(>>)の使い方を解説
C#には、ビット単位でデータを操作するための「シフト演算子」が用意されています。代表的なものが左シフト演算子(<<)と右シフト演算子(>>)です。この記事では、それぞれの仕組みと具体的な使い方をサンプルコードとともに解説します。 左シフト演算子(<<)とは 左シフト演算子は、左側のオペランドの値を、右側のオペランドが指定したビット数だけ左に移動させる演算子です。 ビットが左にずれると、空いた下位ビットには0が埋められます。2進数では1桁左にずれるごとに値が2倍になるため、左シフトは「2のn乗倍」の計算としても利用できます。 右シフト演算子(>>)