Monday, 31 March 2025

Enum with Flag Attribute in .NET


In .NET, you can use the Flags attribute with an enum. You can combine multiple values into one to represent a set of bit fields. It is useful when you want to combine options or states using bitwise operations.

Here is an example of how to define and use an enum with the Flags attribute:

[Flags]
public enum BankruptcyStatus
{
    None = 0,              // No status
    Filing = 1,            // Bankruptcy is filed
    Reorganization = 2,    // Bankruptcy is under reorganization (Chapter 11, for example)
    Discharge = 4,         // Debts have been discharged (Chapter 7, for example)
    Closed = 8,            // Bankruptcy case is closed
    All = Filing | Reorganization | Discharge | Closed  // All possible statuses
}


class Program
{
    static void Main()
    {
        // Assigning multiple flags to a variable
        BankruptcyStatus currentStatus = BankruptcyStatus.Filing | BankruptcyStatus.Reorganization;

        Console.WriteLine($"Current Bankruptcy Status: {currentStatus}");

        // Checking if a specific status is active
        bool isFiling = (currentStatus & BankruptcyStatus.Filing) == BankruptcyStatus.Filing;
        Console.WriteLine($"Is filing in progress? {isFiling}");

        bool isReorganizing = (currentStatus & BankruptcyStatus.Reorganization) == BankruptcyStatus.Reorganization;
        Console.WriteLine($"Is bankruptcy under reorganization? {isReorganizing}");

        // Adding a new status (Discharge)
        currentStatus |= BankruptcyStatus.Discharge;
        Console.WriteLine($"Updated Bankruptcy Status: {currentStatus}");

        // Checking if discharge has occurred
        bool isDischarged = (currentStatus & BankruptcyStatus.Discharge) == BankruptcyStatus.Discharge;
        Console.WriteLine($"Has the bankruptcy been discharged? {isDischarged}");

        // Remove the 'Filing' status (assuming bankruptcy filing is no longer active)
        currentStatus &= ~BankruptcyStatus.Filing;
        Console.WriteLine($"Updated Bankruptcy Status after removing Filing: {currentStatus}");
    }
}

[Flags] Attribute: The Flags attribute indicates that the enum values are bit fields, and you can combine them using bitwise operations.

Enum Values:

  • Filing = 1: Represents the status of the bankruptcy being filed.

  • Reorganization = 2: Represents the status of a reorganization process, like Chapter 11.

  • Discharge = 4: Represents the status where debts are discharged, like in a Chapter 7 bankruptcy.

  • Closed = 8: Represents the bankruptcy case being closed.

Enum with Flag Attribute in .NET

In .NET, you can use the Flags attribute with an enum. You can combine multiple values into one to represent a set of bit fields. It is use...