int double struct和enum ValueType

时间:2014-10-29 12:49:29

标签: c#

最近在技术测试中提出了这个问题:

其中以下是值类型:

  1. int i
  2. double d
  3. struct S { int a; string b; }
  4. enum Test { a, b, c, d }
  5. 我认为这是一个棘手的问题; int和double是结构体,结构体是ValueTypes,因此所有答案都是值类型。但只允许一个答案,显然“正确”答案是4)枚举。

    无论如何,答案4)可以是唯一正确的答案吗?

3 个答案:

答案 0 :(得分:6)

问题的作者可能有不同的definition of value types

所有四个答案都是值类型:

int integer = 0;
Console.WriteLine(integer.GetType().IsValueType); //true
double dbl = 0.0;
Console.WriteLine(dbl.GetType().IsValueType); //true
S s = new S();
Console.WriteLine(s.GetType().IsValueType); //true
Test t = Test.a;
Console.WriteLine(t.GetType().IsValueType); //true

答案 1 :(得分:3)

它们都是价值类型。请参阅MSDN上的value types table

答案 2 :(得分:1)

据我所知,所有这些都是值类型,如this documentation中所述。回答你的问题:不,4)无法成为唯一正确的答案。