フッターコンテンツにスキップ
.NETヘルプ

C# Logical Operators (開発者向けの仕組み)

論理演算子を理解することは、プログラミングで条件文を扱う際に不可欠です。 XORから算術演算まで、与えられた条件の真偽を判断する上で重要な役割を果たします。

このガイドでは、C# における論理演算子の基本、ブール値、演算子の優先順位、論理否定などの概念を一通り説明します。

論理演算子とは何ですか?

論理演算子は、一般的に論理操作として知られ、プログラミングの意思決定の核を形成します。 ブール式に作用し、それらを評価して真または偽のブール値を生成します。提供された条件に応じて、これが決まります。 これらの演算子は、プログラムの流れを制御する上で重要な役割を果たし、特定の基準に基づいて特定のコードブロックを実行できるようにします。

以下では、C#のさまざまな論理演算子を掘り下げ、それらの機能を理解し、論理演算子をどのようにアプリケーションに組み込んで、正確で効率的な論理操作を実行できるかを紹介します。

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
    }
}
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
    }
}
Friend Class Program
	Shared Sub Main(ByVal 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 Class
$vbLabelText   $csharpLabel

この例では、isAdultは真ですが、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
    }
}
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
    }
}
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim isMember As Boolean = True
		Dim hasTicket As Boolean = False
		Dim canEnter As Boolean = isMember OrElse hasTicket

		' Output the result to the console; expected output is true
		Console.WriteLine(canEnter) ' Output: true
	End Sub
End Class
$vbLabelText   $csharpLabel

ここでは、isMemberが真であるため、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
    }
}
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
    }
}
Friend Class Program
	Shared Sub Main(ByVal 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 Class
$vbLabelText   $csharpLabel

ここでは、isLoggedOnが偽であるため、論理NOT演算子は真を返します。

他の演算子との組み合わせ

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: false
bool isWeekend = false;
bool hasVacation = true;
bool isWorkDay = !(isWeekend || hasVacation);

// Output the result to the console; expected output is false
Console.WriteLine(isWorkDay); // Output: false
Dim 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
$vbLabelText   $csharpLabel

論理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
    }
}
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
    }
}
Friend Class Program
	Shared Sub Main(ByVal 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 Class
$vbLabelText   $csharpLabel

hasPasswordhasSmartCardの値が異なるため、論理XORは真を返します。 両方が真または両方が偽であれば、偽を返します。

その他の関連する演算子

複合代入演算子

複合代入演算子は算術と代入を組み合わせます。 操作を実行し、その結果を変数に代入するための省略形です。 複合代入演算子の種類は以下の通りです:

  • +=: 加算して代入
  • -=: 減算して代入
  • *=: 乗算して代入
  • /=: 除算して代入
  • %=: 剰余を求めて代入
  • &=: ビットANDして代入
  • |: ビットORして代入
  • ^=: ビットXORして代入

以下でそれらがどのように機能するかを示します:

int x = 5;
x += 3; // Equivalent to x = x + 3; x is now 8
int x = 5;
x += 3; // Equivalent to x = x + 3; x is now 8
Dim x As Integer = 5
x += 3 ' Equivalent to x = x + 3; x is now 8
$vbLabelText   $csharpLabel

算術演算子

算術演算子は標準的な数学的操作を実行します。 これには以下が含まれます:

  • +: 加算
  • -: 減算
  • *: 乗算
  • /: 除算
  • %: 剰余(除算の余り)

演算子の優先順位

演算子の優先順位は、式内の操作が実行される順序を定義します。 例えば、乗算と除算は加算と減算より先に実行されます。

C#における演算子の優先順位は以下の通りです:

  1. 論理NOT(!)
  2. 乗法 (*、/、%)
  3. 加法 (+、-)
  4. 比較と型チェック (<, >, <=, >=, is, as)
  5. 等価 (==、!=)
  6. 論理AND (&&)
  7. 論理OR (||)

ビット演算子

ブール値に基づく論理演算子とは別に、ビット単位の論理演算子は整数のバイナリ表現で動作します。 ビット単位の論理演算子の種類は以下の通りです:

  • &: ビットAND
  • |: ビットOR
  • ^: ビットXOR
  • ~: ビットNOT
  • <<: 左シフト
  • >>: 右シフト

ビット演算子は、整数値内の個々のビットを操作することを可能にします。

Iron Suite: C#向けの強力なツールキット

Iron Suite for C# Developmentは、C#プログラミングの機能を拡張するために特別に設計されたライブラリのコレクションです。 この素晴らしいツールセットは、ドキュメント処理、データ処理、テキスト認識など、さまざまなタスクで開発者を支援します。 各製品が論理演算子をどのように活用しているかを見てみましょう。

IronPDF

IronPDFは、C#アプリケーション内でPDFドキュメントを作成、読み取り、編集、および変換を可能にします。 特定の条件に基づいてPDFから特定の情報をフィルタリングおよび抽出する必要がある場合を考えてください。 論理演算子は、これらの条件を定義し、プログラムが抽出または操作するデータをどのように決定できるかを賢明にするために利用できます。

IronPDFがどのようにPDFドキュメントの処理を強化するかを発見する

IronXL

IronXLは、Microsoft Excelファイルと簡単に作業でき、C#で直接スプレッドシートを読み取り、書き込み、操作することができます。 データを処理する際に動的条件を作成するために論理演算子を利用できます。 例えば、複数の条件を満たすレコードをフィルタリングするために論理AND演算子を使用し、または複数の条件を満たす行を選択するために論理OR演算子を使用します。

IronXLを使用してExcelで作業する方法を学ぶ

IronOCR

IronOCRは、C#アプリケーションで画像からテキストを認識し、読み取ることを可能にする強力なツールです。 論理演算子は、抽出されたテキストの後処理で役立つことがあります。 抽出した情報を検証する必要があるユースケースを想像してください。 データの正確性を確保するために、論理NOT、AND、OR演算子を使用して複雑な検証ルールを作成できます。

IronOCRがどのように光学文字認識を実現するかを確認する

IronBarcode

IronBarcodeは、C#アプリケーション内でバーコードを生成、読み取り、認識する能力を追加します。 特定の条件に基づいて開発または読み取るバーコードの種類を決定したり、特定の論理ルールに従ってバーコードデータを検証したりするために論理演算子を使用することがあります。

IronBarcodeがどのようにバーコード操作を管理するかを発見する

結論

論理演算子は、新進のプログラマーにとって必須のスキルであり、このガイドはC#演算子が何ができるかについての一部分に過ぎません。 Iron Suite for C# Developmentを使用することで、本物のアプリケーションで論理演算子を使用する実例を見ることができます。

C#のスキルを磨きたい場合、Iron Suite内のすべての製品は開発環境で完全に無料で使用できます。 初心者であろうと、すでにC#のプロであろうと、これらのツールはコーディングを次のレベルに引き上げるのに役立ちます。

よくある質問

C# における論理演算子とは何であり、どのように使用されますか?

C# の論理演算子は、プログラミングにおいて意思決定を行うためのブール式を評価するために使用されます。これには AND (&&)、OR (||)、NOT (!)、XOR (^) が含まれます。これらの演算子は、コード内の条件の真偽を判定し、プログラムの流れを効果的に制御するのに役立ちます。

C# で PDF ドキュメントを処理するために論理演算子をどのように使用できますか?

IronPDF を使用すると、PDF ファイルから特定のデータを抽出する条件を論理演算子で定義できます。例えば、AND (&&) 演算子を使用して、処理またはデータ抽出を行う前に複数の条件が満たされていることを確認することができます。

C# の論理 AND 演算子と論理 OR 演算子の違いは何ですか?

論理 AND 演算子 (&&) は、両方のオペランドが真である場合のみ真を返しますが、論理 OR 演算子 (||) は少なくとも一つのオペランドが真である場合に真を返します。これらの演算子は、C# で複雑な条件文を構成するのに役立ちます。

論理 NOT 演算子は C# のブール式にどのように影響しますか?

論理 NOT 演算子 (!) は、ブール式の値を反転させます。条件が真の場合、NOT 演算子を適用すると偽になり、その逆もまた然りです。これは、条件の結果を反転させるのに便利です。

論理演算子は C# で複合代入演算子と組み合わせることができますか?

はい、論理演算子は C# の複合代入演算子と組み合わせて効率的に操作を行うことができます。+=、-= などの複合代入演算子を使用すると、算術演算を行い、結果を一度に割り当てることができます。

演算子の優先順位は C# の式の評価にどのように影響しますか?

演算子の優先順位は、式内の操作が実行される順序を決定します。C# では、乗算と除算が加算と減算の前に評価され、論理演算子にはそれぞれの優先順位レベルがあり、複雑な式が解決される方法に影響を与えます。

XOR 演算子とは何であり、C# ではいつ使用しますか?

C# の XOR 演算子 (^) は、2 つのオペランドが異なるブール値を持つ場合に真を返します。これは、2 つの条件のうちどちらか一方のみが真である必要があるシナリオ、たとえば状態をトグルする場合に特に便利です。

開発者は Iron Suite を使用して C# ドキュメント処理をどのように強化できますか?

開発者は、IronPDF を PDF に、IronXL を Excel ファイルに、IronOCR をテキスト認識に利用することで Iron Suite の機能を活用し、C# ドキュメント処理を強化できます。これらのツールは論理演算子と統合され、データを効率的に処理します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。