R
Random.Coder
The output of this simple program below differs if it's compiled in
Visual Studio 2005 and 2008. Is one the correct output, and if so,
why?
using System;
namespace DerivedTestApp
{
class BaseClass
{
static public void Test(uint a)
{
Console.WriteLine("(BaseClass) uint: {0}", a);
}
}
class DerivedClass : BaseClass
{
public enum TestEnum
{
Alpha,
Beta,
}
static public void Test(TestEnum a)
{
string s = "Error";
switch (a)
{
case TestEnum.Alpha: s = "Alpha"; break;
case TestEnum.Beta: s = "Beta"; break;
}
Console.WriteLine("(DerivedClass) TestEnum: {0}", s);
}
}
class Program
{
static void Main()
{
DerivedClass.Test((uint)0);
DerivedClass.Test(DerivedClass.TestEnum.Alpha);
}
}
}
// -- Visual studio 2005:
//(BaseClass) uint: 0
//(DerivedClass) TestEnum: Alpha
// -- Visual studio 2008:
//(DerivedClass) TestEnum: Alpha
//(DerivedClass) TestEnum: Alpha
Visual Studio 2005 and 2008. Is one the correct output, and if so,
why?
using System;
namespace DerivedTestApp
{
class BaseClass
{
static public void Test(uint a)
{
Console.WriteLine("(BaseClass) uint: {0}", a);
}
}
class DerivedClass : BaseClass
{
public enum TestEnum
{
Alpha,
Beta,
}
static public void Test(TestEnum a)
{
string s = "Error";
switch (a)
{
case TestEnum.Alpha: s = "Alpha"; break;
case TestEnum.Beta: s = "Beta"; break;
}
Console.WriteLine("(DerivedClass) TestEnum: {0}", s);
}
}
class Program
{
static void Main()
{
DerivedClass.Test((uint)0);
DerivedClass.Test(DerivedClass.TestEnum.Alpha);
}
}
}
// -- Visual studio 2005:
//(BaseClass) uint: 0
//(DerivedClass) TestEnum: Alpha
// -- Visual studio 2008:
//(DerivedClass) TestEnum: Alpha
//(DerivedClass) TestEnum: Alpha