
C# Logical Operators (開発者向けの仕組み)
論理演算子を理解することは、プログラミングで条件文を扱う際に不可欠です。 XORから算術演算まで、与えられた条件の真偽を判断する上で重要な役割を果たします。
このガイドでは、C# における論理演算子の基本、ブール値、演算子の優先順位、論理否定などの概念を一通り説明します。
論理演算子とは何ですか?
論理演算子は、一般的に論理操作として知られ、プログラミングの意思決定の核を形成します。 ブール式に作用し、それらを評価して真または偽のブール値を生成します。提供された条件に応じて、これが決まります。 これらの演算子は、プログラムの流れを制御する上で重要な役割を果たし、特定の基準に基づいて特定のコードブロックを実行できるようにします。
以下では、C#のさまざまな論理演算子を掘り下げ、それらの機能を理解し、論理演算子をどのようにアプリケーションに組み込んで、正確で効率的な論理操作を実行できるかを紹介します。
Types of Logical Operators in C#
論理AND演算子(&&)
論理AND演算子(&&)は、2つのブール式を組み合わせ、両方が真の場合に真を返します。 どちらかまたは両方が偽の場合、結果は偽になります。 すべての条件を満たさなければならない複数条件のシナリオで一般的に使用されます。 例えば、ユーザーが十分な年齢で、購入するのに十分な残高があるかを検証する場合です。
演算子 &&: :
- 左オペランドを評価します
- 左オペランドが偽の場合、全体の式は偽になります
- 左オペランドが真の場合、右オペランドを評価します
- 両方のオペランドが真であれば、式は真になります
左オペランドが偽の場合、全体式が偽であることが保証されるため、右オペランドは評価されません。
class Program
{
static void Main(string[] args)
{
bool isAdult = true;
bool hasBalance = false;
bool canPurchase = isAdult && hasBalance;
// Output the result to the console; expected output is false
Console.WriteLine(canPurchase); // Output: false
}
}Module Program
Sub Main(args As String())
Dim isAdult As Boolean = True
Dim hasBalance As Boolean = False
Dim canPurchase As Boolean = isAdult AndAlso hasBalance
' Output the result to the console; expected output is false
Console.WriteLine(canPurchase) ' Output: false
End Sub
End Moduleこの例では、hasBalanceが偽であるため、結果は偽です。
論理OR演算子(||)
論理OR演算子(||)は、2つのブール式を組み合わせ、少なくとも1つが真であれば真を返します。 両方が偽であれば、結果は偽になります。 いくつかの条件のうち少なくとも1つが真である必要があるシナリオに最適です。 例えば、メンバーまたはチケットを持っている場合に入場を許可します。
||演算子:
- 左オペランドを評価します
- 左オペランドが真であれば、全体の式は真です
- 左オペランドが偽であれば、右オペランドを評価します
- どちらかのオペランドが真であれば、式は真です
左オペランドが真の場合、全体式が真であることが保証されるため、右オペランドは評価されません。
class Program
{
static void Main(string[] args)
{
bool isMember = true;
bool hasTicket = false;
bool canEnter = isMember || hasTicket;
// Output the result to the console; expected output is true
Console.WriteLine(canEnter); // Output: true
}
}Module Program
Sub Main(args As String())
Dim isMember As Boolean = True
Dim hasTicket As Boolean = False
Dim canEnter As Boolean = isMember Or hasTicket
' Output the result to the console; expected output is true
Console.WriteLine(canEnter) ' Output: true
End Sub
End Moduleここでは、hasTicketは評価すらされず、結果は真です。
論理NOT演算子(!)
論理NOT演算子(!)は、ブール式の値を反転させます。 オペランドが真であれば結果は偽になり、その逆もまた然りです。 条件を反転するために一般的に使用されます。 たとえば、ある機能が有効になっている場合、その機能を無効にするべきかどうかを決定するためにNOT演算子を利用します。
それがどのように機能するかは次の通りです:
- オペランドを評価します。
- オペランドが真であれば、結果は偽です。
- オペランドが偽であれば、結果は真です。
class Program
{
static void Main(string[] args)
{
bool isLoggedOn = false;
bool showLoginButton = !isLoggedOn;
// Output the result to the console; expected output is true
Console.WriteLine(showLoginButton); // Output: true
}
}Module Program
Sub Main(args As String())
Dim isLoggedOn As Boolean = False
Dim showLoginButton As Boolean = Not isLoggedOn
' Output the result to the console; expected output is true
Console.WriteLine(showLoginButton) ' Output: true
End Sub
End Moduleここでは、isLoggedOnが偽であるため、論理否定演算子は真を返します。
他の演算子との組み合わせ
NOT演算子はANDおよびOR演算子と組み合わせて、より複雑な条件を作成することができます。
bool isWeekend = false;
bool hasVacation = true;
bool isWorkDay = !(isWeekend || hasVacation);
// Output the result to the console; expected output is false
Console.WriteLine(isWorkDay); // Output: falseDim isWeekend As Boolean = False
Dim hasVacation As Boolean = True
Dim isWorkDay As Boolean = Not (isWeekend OrElse hasVacation)
' Output the result to the console; expected output is false
Console.WriteLine(isWorkDay) ' Output: false論理XOR演算子(^)
論理XOR演算子(^)は、2つのオペランドが異なる値を持っている場合に真を返します。 両方が同じであれば偽を返します。 この演算子は、2つの条件のうち正確に1つが真であることを保証したい場合に特に便利です。
class Program
{
static void Main(string[] args)
{
bool hasPassword = true;
bool hasSmartCard = false;
bool canLogin = hasPassword ^ hasSmartCard;
// Output the result to the console; expected output is true
Console.WriteLine(canLogin); // Output: true
}
}Module Program
Sub Main(args As String())
Dim hasPassword As Boolean = True
Dim hasSmartCard As Boolean = False
Dim canLogin As Boolean = hasPassword Xor hasSmartCard
' Output the result to the console; expected output is true
Console.WriteLine(canLogin) ' Output: true
End Sub
End ModulehasSmartCardの値が異なるため、論理XORは真を返します。 両方が真または両方が偽であれば、偽を返します。
その他の関連する演算子
複合代入演算子
複合代入演算子は算術と代入を組み合わせます。 操作を実行し、その結果を変数に代入するための省略形です。 複合代入演算子の種類は以下の通りです:
・+=: 加算して代入
・-=: 減算して代入
*・*=: 乗算して代入
・/=: 除算して代入
・%=: 剰余演算して代入
・&=: ビット単位のANDして代入
|: ビットORして代入 ・^=: ビット単位のXORして代入
以下でそれらがどのように機能するかを示します:
int x = 5;
x += 3; // Equivalent to x = x + 3; x is now 8Dim x As Integer = 5
x += 3 ' Equivalent to x = x + 3; x is now 8算術演算子
算術演算子は標準的な数学的操作を実行します。 これには以下が含まれます:
・+: 加算
・-: 減算
*・*: 乗算
・/: 除算
・%: 剰余演算(除算の余り)
演算子の優先順位
演算子の優先順位は、式内の操作が実行される順序を定義します。 例えば、乗算と除算は加算と減算より先に実行されます。
C#における演算子の優先順位は以下の通りです:
- 論理NOT(!)
- 乗法 (*、/、%)
- 加法 (+、-)
- 比較と型チェック (<, >, <=, >=, is, as)
- 等価性 (==, !=)
- 論理AND (&&)
- 論理OR (||)
ビット演算子
ブール値に基づく論理演算子とは別に、ビット単位の論理演算子は整数のバイナリ表現で動作します。 ビット単位の論理演算子の種類は以下の通りです:
・&: ビット単位のAND
|: ビットOR ・^: ビット単位のXOR ・~: ビット単位のNOT ・<<: 左シフト ・>>: 右シフト
ビット演算子は、整数値内の個々のビットを操作することを可能にします。
Iron Suite: A Powerful Toolkit for C#
Iron Suite for C# Developmentは、C#プログラミングの機能を拡張するために特別に設計されたライブラリのコレクションです。 この素晴らしいツールセットは、ドキュメント処理、データ処理、テキスト認識など、さまざまなタスクで開発者を支援します。 各製品が論理演算子をどのように活用しているかを見てみましょう。
IronPDF
IronPDFは、C#アプリケーション内でPDFドキュメントを作成、読み取り、編集、および変換を可能にします。 特定の条件に基づいてPDFから特定の情報をフィルタリングおよび抽出する必要がある場合を考えてください。 論理演算子は、これらの条件を定義し、プログラムが抽出または操作するデータをどのように決定できるかを賢明にするために利用できます。
IronPDFがどのようにPDFドキュメントの処理を強化するかを発見する。
IronXL
IronXLは、Microsoft Excelファイルと簡単に作業でき、C#で直接スプレッドシートを読み取り、書き込み、操作することができます。 データを処理する際に動的条件を作成するために論理演算子を利用できます。 例えば、複数の条件を満たすレコードをフィルタリングするために論理AND演算子を使用し、または複数の条件を満たす行を選択するために論理OR演算子を使用します。
IronOCR
IronOCRは、C#アプリケーションで画像からテキストを認識し、読み取ることを可能にする強力なツールです。 論理演算子は、抽出されたテキストの後処理で役立つことがあります。 抽出した情報を検証する必要があるユースケースを想像してください。 データの正確性を確保するために、論理NOT、AND、OR演算子を使用して複雑な検証ルールを作成できます。
IronOCRがどのように光学文字認識を実現するかを確認する。
IronBarcode
IronBarcodeは、C#アプリケーション内でバーコードを生成、読み取り、認識する能力を追加します。 特定の条件に基づいて開発または読み取るバーコードの種類を決定したり、特定の論理ルールに従ってバーコードデータを検証したりするために論理演算子を使用することがあります。
IronBarcodeがどのようにバーコード操作を管理するかを発見する。
結論
論理演算子は、新進のプログラマーにとって必須のスキルであり、このガイドはC#演算子が何ができるかについての一部分に過ぎません。 Iron Suite for C# Developmentを使用することで、本物のアプリケーションで論理演算子を使用する実例を見ることができます。
C#のスキルを磨きたい場合、Iron Suite内のすべての製品は開発環境で完全に無料で使用できます。 初心者であろうと、すでにC#のプロであろうと、これらのツールはコーディングを次のレベルに引き上げるのに役立ちます。

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。
関連する記事


