I have the following enum –>
public enum SyncStatus
{
Unavailable = 0,
Checking = 5,
StartedAspNetDb = 10,
FinishedAspNetDb = 20,
StartedMatrixDb = 30,
FinishedMatrixDb = 40,
StartedConnectDb = 50,
FinishedConnectDb = 60,
StartedCmoDb = 70,
FinishedCmoDb = 80,
StartedMcpDb = 90,
FinishedMcpDb = 100
}
Which I use here –>
SyncInBackground.ReportProgress(SyncStatus.StartedAspNetDb);
MergeRepl aspnetdbMergeRepl = new MergeRepl(SystemInformation.ComputerName + "\\SQLEXPRESS", "WWCSTAGE", "aspnetdb", "aspnetdb", "aspnetdb");
aspnetdbMergeRepl.RunDataSync();
SyncInBackground.ReportProgress(SyncStatus.FinishedAspNetDb);
SyncInBackground.ReportProgress(SyncStatus.StartedMatrixDb);
MergeRepl matrixMergeRepl = new MergeRepl(SystemInformation.ComputerName + "\\SQLEXPRESS", "WWCSTAGE", "MATRIX", "MATRIX", "MATRIX");
matrixMergeRepl.RunDataSync();
SyncInBackground.ReportProgress(SyncStatus.FinishedMatrixDb);
SyncInBackground.ReportProgress(SyncStatus.StartedConnectDb);
MergeRepl connectMergeRepl = new MergeRepl(SystemInformation.ComputerName + "\\SQLEXPRESS", "WWCSTAGE", "CONNECT", "Connect", "Connect");
connectMergeRepl.RunDataSync();
SyncInBackground.ReportProgress(SyncStatus.FinishedConnectDb);
What I don’t understand is why, if int is default enum governing type, do I have to CAST this line, like so –>
SyncInBackground.ReportProgress((int)SyncStatus.Checking);
Forgive my ignorance I just like to understand the why of things not just that they are so.
There just isn’t an implicit conversion from an enum type to its underlying type. This makes it harder to accidentally use an enum as its numeric value.
(There’s likewise no conversion the other way.)
There is an implicit conversion from the constant 0 to any enum type, by the way.
Oh, and unboxing from a boxed enum value to its underlying type – or vice versa – works too. At least at one point this was really badly mangled in both the CLI spec and the C# spec; it may well have been fixed by now 🙂
EDIT:
Here’s an alternative option if you actually just want to use the values as numbers:
Alternatively, write a method like this: