Используется точно так же и все остальные переменные - для временного или постоянного хранения логического значения, передачи его куда-то еще, или хранения результата вызова какой-то функции/процедуры. Например WinAPI может возвращать логический флаг.
bool flag = true;
while(flag){
flag = doSomeJob();
}
Или вот еще реальный пример - паттерн "Dispose" в C#:
private bool disposedValue = false; // Для определения избыточных вызовов
protected virtual void Dispose(bool disposing)
{
if (!disposedValue)
{
if (disposing)
{
// TODO: освободить управляемое состояние (управляемые объекты).
}
// TODO: освободить неуправляемые ресурсы (неуправляемые объекты) и переопределить ниже метод завершения.
// TODO: задать большим полям значение NULL.
disposedValue = true;
}
}
// TODO: переопределить метод завершения, только если Dispose(bool disposing) выше включает код для освобождения неуправляемых ресурсов.
// ~Cloud() {
// // Не изменяйте этот код. Разместите код очистки выше, в методе Dispose(bool disposing).
// Dispose(false);
// }
// Этот код добавлен для правильной реализации шаблона высвобождаемого класса.
public void Dispose()
{
// Не изменяйте этот код. Разместите код очистки выше, в методе Dispose(bool disposing).
Dispose(true);
// TODO: раскомментировать следующую строку, если метод завершения переопределен выше.
// GC.SuppressFinalize(this);
}