Q:

What does None=1 refer in the following enum class?

I have noticed the following enum declaration while browsing some sample code. What does None=1 mean ?
public enum ButtonActions
{
    None = 1,        
    Clear,
    Insert,       
    Delete,
    Cancel,
    Close
}

A:

It marks the value of None, which then all following values implicitly count upward from then on:
Clear will be 2 
Insert will be 3 
...
Normally, without any marker, enums default to beginning at 0 and counting upward.
Side note: you can always specify a new "starting" value at any time, and the ordering restarts. For example:
public enum ButtonActions
{
    None = 1,        
    Clear,
    Insert,       
    Delete = 7,
    Cancel,
    Close
}

Now, it will be:
None : 1 
Clear : 2 
Insert : 3 
Delete : 7 
Cancel : 8 
Close : 9 
In C#, enums are strongly typed sets of named constants for underlying integral types. Even though they are their own types with their own methods, underneath the curtains it's all just numbers. When you compare one enum to another, it is more or less an integral comparison.
They are designed in such a way that it is not absolutely necessary to know or care about the actual number the named constants represent - this is in fact why they exist at all, so that you aren't writing 3 and 5 in your code everywhere. But that doesn't change the fact that each named constant maps to a number, ultimately, and so in many cases it is nice to have this degree of control over precisely what numbers they each represent.

A:

From MSDN;

By default the underlying type of each element in the enum is int. 
The following are advantages of using an enum instead of a numeric
  type:

You clearly specify for client code which values are valid for the variable.
In Visual Studio, IntelliSense lists the defined values.

When you do not specify values for the elements in the enumerator
  list, the values are automatically incremented by 1. When you create an enum, select the most logical default value and give it a value of zero. That will cause all enums to have that default value if they are not explicitly assigned a value when they are created.

I believe the one of the most important part is why we using these values is bit flags. Using with FlagsAttribute you can use bitwise operations like AND, OR, NOT and XOR on your enum elements. Example of MSDN page;
[Flags]
enum Days2
{
    None = 0x0,
    Sunday = 0x1,
    Monday = 0x2,
    Tuesday = 0x4,
    Wednesday = 0x8,
    Thursday = 0x10,
    Friday = 0x20,
    Saturday = 0x40
}
class MyClass
{
    Days2 weekends = Days2.Sunday | Days2.Saturday;
}

