ちょっと気になったので懸賞コードを書きました。
ポイントはEnumのキャストは意味がないということです。
(enuma)evalと(int)evalは等価です
enum ee
{
a, b, c, d, e,
}
static void Main(string[] args)
{
System.Diagnostics.Stopwatch sw = null;
sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 99999; i++)
{
funca((ee)i);
}
sw.Stop();
Console.WriteLine(sw.ElapsedTicks);
sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 99999; i++)
{
funcb((ee)i);
}
sw.Stop();
Console.WriteLine(sw.ElapsedTicks);
}
static void funca(ee val)
{
if (Enum.IsDefined(typeof(ee), val))
{ }
else {
int i = 0; }
}
static void funcb(ee val)
{
try
{
ee val2 = (ee) val;
}
catch {
int i = 0; }
}
int i=0でブレークしてみてください。
http://blog.tk-engineering.com/?eid=701110