Windows アプリ
目次を折りたたむ
目次を展開する
この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Boolean 構造体

 

ブール値 (true または false) を表します。

名前空間:   System
アセンブリ:  mscorlib (mscorlib.dll 内)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public struct Boolean : IComparable, IConvertible, IComparable<bool>, 
	IEquatable<bool>

名前説明
System_CAPS_pubmethodCompareTo(Boolean)

このインスタンスと指定した Boolean オブジェクトを比較し、互いの関係を示す整数を返します。

System_CAPS_pubmethodCompareTo(Object)

指定したオブジェクトとこのインスタンスを比較し、互いの関係を示す整数を返します。

System_CAPS_pubmethodEquals(Boolean)

対象のインスタンスが、指定した Boolean オブジェクトに等しいかどうかを示す値を返します。

System_CAPS_pubmethodEquals(Object)

対象のインスタンスが、指定したオブジェクトに等しいかどうかを示す値を返します。(ValueType.Equals(Object) をオーバーライドする。)

System_CAPS_pubmethodGetHashCode()

このインスタンスのハッシュ コードを返します。(ValueType.GetHashCode() をオーバーライドする。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されました。)

System_CAPS_pubmethodGetTypeCode()

Boolean 値の型の型コードを返します。

System_CAPS_pubmethodSystem_CAPS_staticParse(String)

論理値の指定した文字列形式に変換、 Boolean と同じです。

System_CAPS_pubmethodToString()

このインスタンスの値をそれと等価な文字列形式に変換します ("True" または "False")。(ValueType.ToString() をオーバーライドする。)

System_CAPS_pubmethodToString(IFormatProvider)

このインスタンスの値をそれと等価な文字列形式に変換します ("True" または "False")。

System_CAPS_pubmethodSystem_CAPS_staticTryParse(String, Boolean)

論理値の指定した文字列形式を等価の Boolean に変換します。 戻り値は、変換が成功したか失敗したかを示します。

名前説明
System_CAPS_pubfieldSystem_CAPS_staticFalseString

ブール値の false を文字列として表します。 このフィールドは読み取り専用です。

System_CAPS_pubfieldSystem_CAPS_staticTrueString

ブール値の true を文字列として表します。 このフィールドは読み取り専用です。

名前説明
System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToBoolean(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの詳細については、「IConvertible.ToBoolean」を参照してください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToByte(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの詳細については、「IConvertible.ToByte」を参照してください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToChar(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 この変換はサポートされていません。 このメソッドを使用しようとすると、InvalidCastException がスローされます。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToDateTime(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 この変換はサポートされていません。 このメソッドを使用しようとすると、InvalidCastException がスローされます。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToDecimal(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの説明については、IConvertible.ToDecimal を参照してください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToDouble(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの詳細については、「IConvertible.ToDouble」をご覧ください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToInt16(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの説明については、「IConvertible.ToInt16」を参照してください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToInt32(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの詳細については、「IConvertible.ToInt32」を参照してください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToInt64(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの詳細については、「IConvertible.ToInt64」をご覧ください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToSByte(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの詳細については、「IConvertible.ToSByte」を参照してください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToSingle(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの説明については、IConvertible.ToSingle を参照してください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToType(Type, IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの詳細については、「IConvertible.ToType」を参照してください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToUInt16(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの詳細については、「IConvertible.ToUInt16」をご覧ください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToUInt32(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの詳細については、「IConvertible.ToUInt32」をご覧ください。

System_CAPS_pubinterfaceSystem_CAPS_privmethodIConvertible.ToUInt64(IFormatProvider)

この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。 このメンバーの詳細については、「IConvertible.ToUInt64」を参照してください。

A Boolean インスタンスが 2 つの値のいずれかに付与できます。 true, 、または falseです。

Boolean 構造は、次のタスクをサポートするメソッドを提供します。

次のセクションでは、これらのタスクとその他の使用状況の詳細について説明します。

ブール値の書式設定
ブール値に変換します。
ブール値の解析
ブール値を比較します。
バイナリ値としてブール値の使用
ブール値を持つ操作を実行します。
ブール値との相互運用機能

文字列表現、 Boolean は"True"、 true 値または"False"に、 false 値。 文字列表現、 Boolean 値が、読み取り専用で定義されている TrueStringFalseString フィールドです。

使用する、 ToString ブール値を文字列に変換します。 ブール型の構造には、2 つ ToString オーバー ロード: パラメーターなし ToString() メソッドおよび ToString(IFormatProvider) メソッドで、書式を制御するパラメーターが含まれています。 ただし、このパラメーターが無視されるため、2 つのオーバー ロードには、同一の文字列が生じます。 ToString(IFormatProvider) メソッドは、カルチャ依存の書式指定をサポートしていません。

次の例で書式設定、 ToString メソッドです。 注例で使用した、 複合書式指定 機能、ため、 ToString メソッドを暗黙的に呼び出されます。

using System;

public class Example
{
   public static void Main()
   {
      bool raining = false;
      bool busLate = true;

      Console.WriteLine("It is raining: {0}", raining);
      Console.WriteLine("The bus is late: {0}", busLate);
   }
}
// The example displays the following output:
//       It is raining: False
//       The bus is late: True

Boolean 構造体は、2 つの値を設定できます、これを簡単にカスタムの書式設定を追加します。 単純なカスタム書式設定に"True"および"False"のリテラルに置換するその他の文字列などの言語でサポートされる任意の条件の評価機能を使用することができます、 条件演算子 C# の場合、または 場合演算子 Visual Basic でします。 次の例では、この手法が、書式設定を使用して Boolean 値として"Yes"および"True"と"False"ではなく"No"です。

using System;

public class Example
{
   public static void Main()
   {
      bool raining = false;
      bool busLate = true;

      Console.WriteLine("It is raining: {0}", 
                        raining ? "Yes" : "No");
      Console.WriteLine("The bus is late: {0}", 
                        busLate ? "Yes" : "No" );
   }
}
// The example displays the following output:
//       It is raining: No
//       The bus is late: Yes

カルチャがフォーマット化するより複雑なのカスタム書式指定操作を呼び出すことができます、 String.Format(IFormatProvider, String, Object[]) メソッドを提供し、 ICustomFormatter 実装します。 次の例では、実装、 ICustomFormatterIFormatProvider 英語 (米国)、フランス語 (フランス)、ロシア語 (ロシア) カルチャのカルチャに依存したブール値の文字列を提供するインターフェイスです。

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      String[] cultureNames = { "", "en-US", "fr-FR", "ru-RU" };
      foreach (var cultureName in cultureNames) {
         bool value = true;
         CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
         BooleanFormatter formatter = new BooleanFormatter(culture);

         String result = String.Format(formatter, "Value for '{0}': {1}", culture.Name, value);
         Console.WriteLine(result);
      }
   }
}

public class BooleanFormatter : ICustomFormatter, IFormatProvider
{   
   private CultureInfo culture;

   public BooleanFormatter() : this(CultureInfo.CurrentCulture)
   { }

   public BooleanFormatter(CultureInfo culture)
   {
      this.culture = culture; 
   }

   public Object GetFormat(Type formatType)
   { 
      if (formatType == typeof(ICustomFormatter))
         return this;
      else
         return null;
   }

   public String Format(String fmt, Object arg, IFormatProvider formatProvider)
   { 
      // Exit if another format provider is used.
      if (! formatProvider.Equals(this)) return null;

      // Exit if the type to be formatted is not a Boolean
      if (! (arg is Boolean)) return null;

      bool value = (bool) arg;
      switch (culture.Name) {
         case "en-US":
            return value.ToString();
         case "fr-FR":
            if (value) 
               return "vrai";
            else
               return "faux";
         case "ru-RU":
            if (value)
               return "верно";
            else
               return "неверно";
         default:
            return value.ToString();  
      }
   }
}
// The example displays the following output:
//       Value for '': True
//       Value for 'en-US': True
//       Value for 'fr-FR': vrai
//       Value for 'ru-RU': верно

必要に応じて使用 リソース ファイル カルチャに固有のブール値の文字列を定義します。

Boolean Implements 構造体、 IConvertible インターフェイスです。 その結果、使用することができます、 Convert 間の変換を行うにはクラス、 Boolean 値と、.NET Framework の他の任意のプリミティブ型を呼び出すことができます、 Boolean 構造体の明示的な実装です。 ただし、間の変換、 Boolean し、次の種類はサポートされないので、対応する変換メソッドは、スロー、 InvalidCastException 例外。

ブール値に整数または浮動小数点数値からすべての変換に変換する値が 0 以外 true およびゼロ値に falseします。 次の例では、これを示しますの選択のオーバー ロードを呼び出すことによって、 Convert.ToBoolean クラスです。

using System;

public class Example
{
   public static void Main()
   {
      Byte byteValue = 12;
      Console.WriteLine(Convert.ToBoolean(byteValue));
      Byte byteValue2 = 0;
      Console.WriteLine(Convert.ToBoolean(byteValue2));
      int intValue = -16345;
      Console.WriteLine(Convert.ToBoolean(intValue));
      long longValue = 945;
      Console.WriteLine(Convert.ToBoolean(longValue));
      SByte sbyteValue = -12;
      Console.WriteLine(Convert.ToBoolean(sbyteValue));
      double dblValue = 0;
      Console.WriteLine(Convert.ToBoolean(dblValue));
      float sngValue = .0001f;
      Console.WriteLine(Convert.ToBoolean(sngValue));
   }
}
// The example displays the following output:
//       True
//       False
//       True
//       True
//       True
//       False
//       True

浮動小数点値からブール値への変換、変換メソッドは 0 での厳密な比較を実行します。 浮動小数点の値が有効桁数を失った場合、結果は予想にことができます。 これで、次の例に示すは、 Double 変数の値を 0 にする必要がありますが、ブール値に変換されます。 結果は、この例に示すように、 true 0.2 の追加機能が有効桁数が失われる原因として考えを繰り返すためです。

ブール値から数値の変換メソッドに変換するときに、 Convert クラス変換 true 1 と false を 0 にします。 ただし、Visual Basic の変換関数に変換 true か 255 (への変換 Byte 値) または (その他の数値変換の場合) の場合は-1。 次の例では変換 true から数値を使用して、 Convert メソッド、および Visual Basic 言語の独自の変換演算子を使用して、Visual Basic の例の場合。

using System;

public class Example
{
   public static void Main()
   {
      bool flag = true;

      byte byteValue;   
      byteValue = Convert.ToByte(flag);
      Console.WriteLine("{0} -> {1}", flag, byteValue);         

      sbyte sbyteValue;
      sbyteValue = Convert.ToSByte(flag);
      Console.WriteLine("{0} -> {1}", flag, sbyteValue);         

      double dblValue;
      dblValue = Convert.ToDouble(flag);
      Console.WriteLine("{0} -> {1}", flag, dblValue);         

      int intValue;
      intValue = Convert.ToInt32(flag);
      Console.WriteLine("{0} -> {1}", flag, intValue);         
   }
}
// The example displays the following output:
//       True -> 1
//       True -> 1
//       True -> 1
//       True -> 1

変換 Boolean 文字列値を参照してください、 ブール値の書式設定 セクションです。 文字列からの変換 Boolean の値を参照してください、 ブール値の解析 セクションです。

Boolean 構造体には、2 つの静的解析メソッドが含まれています。 ParseTryParse, 、ブール値に文字列を変換します。 ブール値の文字列形式の値の大文字と小文字の対応は、 TrueStringFalseString は、"True"および"False"、それぞれのフィールドです。 つまり、正常に解析する文字列だけは"True"、"False"、"true"、"false"またはいくつかの大文字と小文字が混在それと同等です。 「0」、「1」などの数値の文字列を正常に解析することはできません。 文字列比較を実行するときに、先頭または末尾の空白文字は考慮されません。

次の例では、 ParseTryParse 文字列の数を解析するメソッドです。 "True"および"False"の大文字と小文字のオブジェクトのみが正しく解析できることに注意してください。

using System;

public class Example
{
   public static void Main()
   {
      string[] values = { null, String.Empty, "True", "False", 
                          "true", "false", "    true    ", 
                           "TrUe", "fAlSe", "fa lse", "0",  
                          "1", "-1", "string" };
      // Parse strings using the Boolean.Parse method.                    
      foreach (var value in values) {
         try {
            bool flag = Boolean.Parse(value);
            Console.WriteLine("'{0}' --> {1}", value, flag);
         }
         catch (ArgumentException) {
            Console.WriteLine("Cannot parse a null string.");
         }   
         catch (FormatException) {
            Console.WriteLine("Cannot parse '{0}'.", value);
         }         
      }
      Console.WriteLine();
      // Parse strings using the Boolean.TryParse method.                    
      foreach (var value in values) {
         bool flag = false;
         if (Boolean.TryParse(value, out flag))
            Console.WriteLine("'{0}' --> {1}", value, flag);
         else
            Console.WriteLine("Unable to parse '{0}'", value);
      }                                     
   }
}
// The example displays the following output:
//       Cannot parse a null string.
//       Cannot parse ''.
//       'True' --> True
//       'False' --> False
//       'true' --> True
//       'false' --> False
//       '    true    ' --> True
//       'TrUe' --> True
//       'fAlSe' --> False
//       Cannot parse 'fa lse'.
//       Cannot parse '0'.
//       Cannot parse '1'.
//       Cannot parse '-1'.
//       Cannot parse 'string'.
//       
//       Unable to parse ''
//       Unable to parse ''
//       'True' --> True
//       'False' --> False
//       'true' --> True
//       'false' --> False
//       '    true    ' --> True
//       'TrUe' --> True
//       'fAlSe' --> False
//       Cannot parse 'fa lse'.
//       Unable to parse '0'
//       Unable to parse '1'
//       Unable to parse '-1'
//       Unable to parse 'string'

使用することができます Visual Basic でプログラミングしている場合、 CBool ブール値に数値の文字列形式を変換します。 「0」に変換されます false, に 0 以外の値の文字列形式を変換および trueです。 Visual basic プログラミングいない場合は、ブール型に変換する前に数値に、数値の文字列を変換する必要があります。 次の例は、ブール値に整数の配列を変換することで、これを示しています。

using System;

public class Example
{
   public static void Main()
   {
      String[] values = { "09", "12.6", "0", "-13 " };
      foreach (var value in values) {
         bool success, result;
         int number; 
         success = Int32.TryParse(value, out number);
         if (success) {
            // The method throws no exceptions.
            result = Convert.ToBoolean(number);
            Console.WriteLine("Converted '{0}' to {1}", value, result);
         }
         else {
            Console.WriteLine("Unable to convert '{0}'", value); 
         }         
      }
   }
}
// The example displays the following output:
//       Converted '09' to True
//       Unable to convert '12.6'
//       Converted '0' to False
//       Converted '-13 ' to True

ブール値は、いずれかのため true または false, 、理由はほとんどありませんを明示的に呼び出す、 CompareTo メソッド、インスタンスがより大きいより小さいかどうかを示す、または指定した値に等しい。 通常、2 つのブール型の変数を比較するを呼び出す、 Equals メソッドまたは言語の等値演算子を使用します。

ただし、リテラルのブール値を持つブール変数を比較するときに true または false, 、ブール値を評価した結果がブール値であるため、明示的な比較を行う必要はありません。 たとえば、式

if (booleanValue) {

AND

using System;

public class Example
{
   public static void Main()
   {
      bool[] hasServiceCharges = { true, false };
      Decimal subtotal = 120.62m;
      Decimal shippingCharge = 2.50m;
      Decimal serviceCharge = 5.00m;

      foreach (var hasServiceCharge in hasServiceCharges) {
         Decimal total = subtotal + shippingCharge + 
                                (hasServiceCharge ? serviceCharge : 0);
         Console.WriteLine("hasServiceCharge = {1}: The total is {0:C2}.", 
                           total, hasServiceCharge);                       
      }
   }
}
// The example displays output like the following:
//       hasServiceCharge = True: The total is $128.12.
//       hasServiceCharge = False: The total is $123.12.

それと同等ですが、2 回目よりコンパクトなのです。 ただし、両方の方法では、同等のパフォーマンスが得られます。

ブール値として次の c# の例は、メモリの 1 バイトを占有します。 使用例をコンパイルする必要があります、 /unsafe スイッチです。

using System;

public struct BoolStruct
{
   public bool flag1;
   public bool flag2;
   public bool flag3;
   public bool flag4;
   public bool flag5;
}

public class Example
{
   public static void Main()
   {
      unsafe {
         BoolStruct b = new BoolStruct();
         bool* addr = (bool*) &b;
         Console.WriteLine("Size of BoolStruct: {0}", sizeof(BoolStruct));
         Console.WriteLine("Field offsets:");
         Console.WriteLine("   flag1: {0}", (bool*) &b.flag1 - addr);
         Console.WriteLine("   flag1: {0}", (bool*) &b.flag2 - addr);
         Console.WriteLine("   flag1: {0}", (bool*) &b.flag3 - addr);
         Console.WriteLine("   flag1: {0}", (bool*) &b.flag4 - addr);
         Console.WriteLine("   flag1: {0}", (bool*) &b.flag5 - addr);
      }
   }
}
// The example displays the following output:
//       Size of BoolStruct: 5
//       Field offsets:
//          flag1: 0
//          flag1: 1
//          flag1: 2
//          flag1: 3
//          flag1: 4

バイトの下位ビットは、その値を表すために使用されます。 1 の値を表す trueするには、0 の値 falseです。

System_CAPS_warning警告

使用することができます、 System.Collections.Specialized.BitVector32 ブール値のセットを使用する構造体。

ブール値をバイナリ形式に変換するには呼び出すことによって、 BitConverter.GetBytes(Boolean) メソッドです。 メソッドは、1 つの要素のバイト配列を返します。 呼び出すことができます、バイナリ表現からブール値を復元するには BitConverter.ToBoolean(Byte[], Int32) メソッドです。

次の例では、 BitConverter.GetBytes のバイナリ表現と値、および、呼び出しの個別のビットを表示するブール値を変換する方法、 BitConverter.ToBoolean 、バイナリ表現から値を復元する方法です。

using System;

public class Example
{
   public static void Main()
   {
      bool[] flags = { true, false };
      foreach (var flag in flags) {
         // Get binary representation of flag.
         Byte value = BitConverter.GetBytes(flag)[0];
         Console.WriteLine("Original value: {0}", flag);
         Console.WriteLine("Binary value:   {0} ({1})", value, 
                           GetBinaryString(value));
         // Restore the flag from its binary representation.
         bool newFlag = BitConverter.ToBoolean( new Byte[] { value }, 0);
         Console.WriteLine("Restored value: {0}\n", flag);
      }
   }

   private static string GetBinaryString(Byte value)
   {
      String retVal = Convert.ToString(value, 2);
      return new String('0', 8 - retVal.Length) + retVal;
   }
}
// The example displays the following output:
//       Original value: True
//       Binary value:   1 (00000001)
//       Restored value: True
//       
//       Original value: False
//       Binary value:   0 (00000000)
//       Restored value: False

このセクションでは、どのようにブール値を示しています。 アプリで使用します。 最初のセクションでは、フラグとしての使用について説明します。 2 つ目は、算術演算の使用方法を示します。

ブール型の変数は、いくつかの条件の有無を通知するためのフラグとして最もよく使用されます。 など、 String.Compare(String, String, Boolean) メソッドは、最後のパラメーターで ignoreCase, 、2 つの文字列の比較が大文字かどうかを示すフラグです (ignoreCasetrue) と小文字の区別 (ignoreCasefalse)。 フラグの値は、条件付きステートメントで評価できます。

次の例では、単純なコンソール アプリを使用して、フラグとしてブール型の変数の使用方法を説明します。 アプリケーションが、指定されたファイルにリダイレクトされる出力を有効にするコマンド ライン パラメーターを受け取ります (、 /f スイッチ)、指定されたファイルと、コンソールの両方に送信する出力を有効にして (、 /b 切り替える)。 アプリという名前のフラグを定義する isRedirected 出力が、ファイルに送信できる、および、フラグが名前付きかどうかを示すために isBoth をコンソールに出力を送信することを示します。

using System;
using System.IO;
using System.Threading;

public class Example
{
   public static void Main()
   {
      // Initialize flag variables.
      bool isRedirected = false;
      bool isBoth = false; 
      String fileName = "";
      StreamWriter sw = null;

      // Get any command line arguments.
      String[] args = Environment.GetCommandLineArgs();
      // Handle any arguments.
      if (args.Length > 1) { 
         for (int ctr = 1; ctr < args.Length; ctr++) {
            String arg = args[ctr];
            if (arg.StartsWith("/") || arg.StartsWith("-")) {
               switch (arg.Substring(1).ToLower())
               {
                  case "f":
                     isRedirected = true;
                     if (args.Length < ctr + 2) {
                        ShowSyntax("The /f switch must be followed by a filename.");
                        return;
                     }
                     fileName = args[ctr + 1];
                     ctr++;
                     break;
                  case "b":
                     isBoth = true;
                     break;
                  default:
                     ShowSyntax(String.Format("The {0} switch is not supported", 
                                              args[ctr]));
                     return;
               }
            }   
         }
      }

      // If isBoth is True, isRedirected must be True.
      if (isBoth &&  ! isRedirected) { 
         ShowSyntax("The /f switch must be used if /b is used.");
         return;
      }

      // Handle output.
      if (isRedirected) {
         sw = new StreamWriter(fileName); 
         if (!isBoth)
            Console.SetOut(sw); 
      }     
      String msg = String.Format("Application began at {0}", DateTime.Now);
      Console.WriteLine(msg);
      if (isBoth) sw.WriteLine(msg);
      Thread.Sleep(5000);
      msg = String.Format("Application ended normally at {0}", DateTime.Now);
      Console.WriteLine(msg);
      if (isBoth) sw.WriteLine(msg);
      if (isRedirected) sw.Close();
   }

   private static void ShowSyntax(String errMsg)
   {
      Console.WriteLine(errMsg);
      Console.WriteLine("\nSyntax: Example [[/f <filename> [/b]]\n");
   }
}

数学的計算をトリガーする条件の存在を確認するブール値が使用される場合があります。 たとえば、 hasShippingCharge 変数は、出荷費用を請求金額に追加するかどうかを示すフラグとして機能があります。

の操作は、 false 値も何も起こりません操作の結果には数学的な操作で使用する整数値をブール値を変換する必要です。 代わりに、条件付きロジックを使用することができます。

次の例では、小計、運送料、およびオプションのサービス料金で構成されている金額を計算します。 hasServiceCharge 変数では、サービスの料金が適用されるかどうかを決定します。 変換ではなく hasServiceCharge 数値は、サービスの料金の量を掛けることを指定して条件付きロジックを適用できる場合は、サービスの請求金額を追加します。

using System;

public class Example
{
   public static void Main()
   {
      bool[] hasServiceCharges = { true, false };
      Decimal subtotal = 120.62m;
      Decimal shippingCharge = 2.50m;
      Decimal serviceCharge = 5.00m;

      foreach (var hasServiceCharge in hasServiceCharges) {
         Decimal total = subtotal + shippingCharge + 
                                (hasServiceCharge ? serviceCharge : 0);
         Console.WriteLine("hasServiceCharge = {1}: The total is {0:C2}.", 
                           total, hasServiceCharge);                       
      }
   }
}
// The example displays output like the following:
//       hasServiceCharge = True: The total is $128.12.
//       hasServiceCharge = False: The total is $123.12.

COM を基本データ型をマーシャ リングは、一般に単純ですが、中に、 Boolean データ型が例外です。 適用できる、 MarshalAsAttribute をマーシャ リングする属性、 Boolean する表現は次のいずれかの種類。

列挙型

アンマネージ形式

UnmanagedType.Bool

4 バイトの整数値、0 以外の値が表す true と 0 falseです。 既定の形式は、 Boolean 構造体では、フィールド、 Boolean プラットフォームのパラメーターが呼び出しを実行します。

UnmanagedType.U1

ここで、1 は、1 バイトの整数値 true と 0 falseです。

UnmanagedType.VariantBool

評価を表し、2 バイトの整数値 true と 0 falseです。 これは、既定の形式、 Boolean COM 相互運用呼び出しのパラメーターです。

Universal Windows Platform
8 から利用可能
.NET Framework
1.1 から利用可能
Portable Class Library
サポート対象 : portable .NET platforms
Silverlight
2.0 から利用可能
Windows Phone Silverlight
7.0 から利用可能
Windows Phone
8.1 から利用可能

この種類のすべてのメンバーでは、スレッド セーフです。 インスタンスの状態を変更する表示されるメンバーは、実際に新しい値で初期化された新しいインスタンスを返します。 として、他の種類と読み取りと書き込みをこの型のインスタンスを含む共有変数を保護する必要があるスレッド セーフを確保するロックによってです。

トップに戻る
表示:
© 2016 Microsoft