Продажи: 1-800-867-1389
Информация
Запрошенная вами тема показана ниже. Однако эта тема не включена в библиотеку.

Boolean - структура

Представляет логическое (true или false) значение.

Пространство имен:  System
Сборка:  mscorlib (в mscorlib.dll)

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

Тип Boolean предоставляет следующие члены.

  ИмяОписание
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsCompareTo(Boolean)Сравнивает данный экземпляр с заданным объектом Boolean и возвращает целое число, которое показывает их связь друг с другом.
Открытый методПоддерживается платформой XNA FrameworkCompareTo(Object)Сравнивает данный экземпляр с заданным объектом и возвращает целое число, которое показывает их связь друг с другом.
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsEquals(Boolean)Возвращает значение, указывающее, равен ли данный экземпляр заданному объекту типа Boolean.
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsEquals(Object)Возвращает значение, показывающее, равен ли данный экземпляр заданному объекту. (Переопределяет ValueType.Equals(Object).)
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsGetHashCode Возвращает хэш-код для текущего экземпляра. (Переопределяет ValueType.GetHashCode().)
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsGetTypeВозвращает объект Type для текущего экземпляра. (Унаследовано от Object.)
Открытый методПоддерживается платформой XNA FrameworkGetTypeCodeВозвращает TypeCode для типа значения Boolean.
Открытый методСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsParseПреобразует заданное строковое представление логического значения в эквивалентное значение типа Boolean или вызывает исключение, если строка не равна значению Boolean.TrueString или Boolean.FalseString.
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsToString()Преобразовывает числовое значение этого экземпляра в эквивалентное ему строковое представление (“True” или ”False”). (Переопределяет ValueType.ToString().)
Открытый методПоддерживается платформой XNA FrameworkToString(IFormatProvider)Преобразовывает числовое значение этого экземпляра в эквивалентное ему строковое представление (“True” или ”False”).
Открытый методСтатический членПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsTryParseПытается преобразовать заданное строковое представление логического значения в его эквивалент типа Boolean. Возвращает значение, указывающее, успешно ли выполнено преобразование.
В начало страницы

  ИмяОписание
Открытое полеСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsFalseStringПредставляет логическое значение false в виде строки. Это поле доступно только для чтения.
Открытое полеСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsTrueStringПредставляет логическое значение true в виде строки. Это поле доступно только для чтения.
В начало страницы

  ИмяОписание
Явная реализация интерфейсаЗакрытый методПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsIComparable.CompareToИнфраструктура. Сравнивает текущий экземпляр с другим объектом того же типа и возвращает целое число, которое показывает, расположен ли текущий экземпляр перед, после или на той же позиции в порядке сортировки, что и другой объект.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToBooleanИнфраструктура. Описание этого элемента см. в разделе, посвященном IConvertible.ToBoolean.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToByteИнфраструктура. Описание этого элемента см. в разделе, посвященном IConvertible.ToByte.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToCharИнфраструктура. Данное преобразование не поддерживается. При попытке использовать этот метод выбрасывается исключение InvalidCastException.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToDateTimeИнфраструктура. Данное преобразование не поддерживается. При попытке использовать этот метод выбрасывается исключение InvalidCastException.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToDecimalИнфраструктура. Описание этого члена см. в разделе IConvertible.ToDecimal.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToDoubleИнфраструктура. Описание этого члена см. в разделе IConvertible.ToDouble.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToInt16Инфраструктура. Описание этого члена см. в описании метода IConvertible.ToInt16.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToInt32Инфраструктура. Описание этого члена см. в описании метода IConvertible.ToInt32.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToInt64Инфраструктура. Описание этого члена см. в описании метода IConvertible.ToInt64.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToSByteИнфраструктура. Описание этого члена см. в описании метода IConvertible.ToSByte.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToSingleИнфраструктура. Описание этого члена см. в разделе IConvertible.ToSingle.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToTypeИнфраструктура. Описание этого элемента см. в разделе, посвященном IConvertible.ToType.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToUInt16Инфраструктура. Описание этого элемента см. в разделе, посвященном IConvertible.ToUInt16.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToUInt32Инфраструктура. Описание этого члена см. в описании метода IConvertible.ToUInt32.
Явная реализация интерфейсаЗакрытый методПоддерживается платформой XNA FrameworkIConvertible.ToUInt64Инфраструктура. Описание этого члена см. в описании метода IConvertible.ToUInt64.
В начало страницы

Экземпляр Boolean может иметь одно из значений: 2 true или false.

Структура Boolean предоставляет методы, которые поддерживают следующие задачи:

  • Преобразование логические значения в строки. ToString

  • Синтаксический анализ строки, чтобы преобразовать их в логическим значениям: Parse и TryParse

  • Сравнение значений: CompareTo и Equals

В следующих разделах эти задачи и другие сведения потребления:

Логические значения форматирования
Преобразования логических значений
Анализ логические значения
Сравнение логические значения
Работа с Логические значения в качестве бинарные
Выполнение операций с логическими значениями

Логические значения форматирования

Строковое представление Boolean или «true» для true значение или «false» для false значение. Строковое представление Boolean значение задано только для чтения TrueString и полями FalseString.

Используется метод 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, можно легко добавить настраиваемое форматирование. Для простого пользовательского форматирования, в котором другие строковые литералы заменяются для «истинного» и «false», можно использовать любую условно функция вычисления для поддержки языка, например условный оператор или Если оператор в C# в Visual Basic. В следующем примере этот метод используется, чтобы не форматирование значений Boolean как «да» и «нет» вместо «true» и «false».


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. Следующий пример реализует интерфейсы ICustomFormatter и IFormatProvider для предоставления языка, логические строки для языков английских (Соединенные Штаты), французов " французский (Франция) " и русских (России).


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 реализует интерфейс IConvertible. В результате можно использовать класс Convert выполнения преобразования между Boolean значение и любые другие простые типа платформы .NET Framework, или можно вызвать реализации структуры Boolean явные. Однако не поддерживается преобразование между Boolean и следующими типами, поэтому соответствующие методы преобразования вызывают исключение InvalidCastException:

Все преобразования или целого числа с плавающей запятой к логическим значениям преобразования ненулевые значения в 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


При преобразовании с плавающей запятой к логическим значениям, методы преобразования выполняют точное сравнение с нуля. Если с плавающей запятой такт точность, результат может быть непредвиден. Это показано в следующем примере, в котором переменная Double значение ноль, должна быть преобразована в логическое значение. Как показано в примере, результат 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 статических методов анализа, Parse и TryParse, для преобразования строки в логическое значение. Строковое представление логического значения не определено нечувствительными эквивалентами значений полей TrueString и FalseString, «true» и «false» соответственно. Другими словами, только те строки, которые анализируют успешно «.», «false», «.», «false», или некоторые эквивалент с различным регистром. Нельзя успешно для анализа числовые строки, например «0» или «1». Не учитываются символы пробела в начале или конце при выполнении сравнения строк.

В следующем примере используются методы Parse и TryParse для анализа нескольких строк. Обратите внимание, что только без учета эквиваленты «истинного» и «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 и строковое представление любого безнулевого значение преобразуется в 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.


соответствующий, а во втором — более компактным. Однако оба метода предоставляют одинаковую производительность.

Работа с Логические значения в качестве бинарные

Логическое значение занимает один байт памяти. Бит младшего байта используется для представления его значение. Значение 1 соответствует true; значение 0 соответствует false.

Предупреждающее замечаниеВнимание

Можно использовать структуру System.Collections.Specialized.BitVector32 работы с наборами логических значений.

Можно преобразовать логическое значение в соответствии бинарному представление, вызвав метод BitConverter.GetBytes(Boolean). Метод возвращает массив байтов с одним элементом. Для восстановления логическое значение на основе бинарного представления можно вызвать метод 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


Выполнение операций с логическими значениями

В этом разделе показано, как логические значения используются в приложениях. В первом разделе рассматриваются его использование в качестве флажок. Второе иллюстрирует его использование для арифметических операций.

a28wyd50.collapse_all(ru-ru,VS.110).gifЛогические значения, флажки

Логические переменные наиболее часто используемые как флажки, чтобы сообщить о наличие или отсутствие некоторого условия. Например, в методе 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");
   }
}


a28wyd50.collapse_all(ru-ru,VS.110).gifЛогические и арифметические операции

Иногда используется логическое значение, указывающее наличие условия, активирует математическое вычисление. Например, переменная 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.


.NET Framework

Поддерживается в версиях: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Переносимая библиотека классов

Поддерживается в версии: Переносимая библиотека классов

Приложения .NET для Магазина Windows

Поддерживается в версии: Windows 8

Приложения .NET для Windows Phone

Поддерживается в версиях: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

.NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Все члены этого типа являются потокобезопасными. Члены, которые должны менять состояние экземпляра, в действительности возвращают новый экземпляр, инициализированный новым значением. Как и в случае с любыми другими типами, операции чтения и записи общей переменной, содержащей экземпляр данного типа, следует защищать блокировкой, чтобы гарантировать потокобезопасность.

Была ли вам полезна эта информация?
(1500 символов осталось)
Спасибо за ваш отзыв

Добавления сообщества

Корпорация Майкрософт проводит интернет-опрос, чтобы выяснить ваше мнение о веб-сайте MSDN. Если вы желаете принять участие в этом интернет-опросе, он будет отображен при закрытии веб-сайта MSDN.

Вы хотите принять участие?
Показ:
© 2014 Microsoft