トップ回答者
型の既定値をリフレクションで知りたい

質問
回答
-
> enumもいけてるみたいです。
ちょっと気になったんですが、
public enum TestEnum { zero = 1, one, two }
こうすると、GetDefaultValue(typeof(TestEnum)) は TestEnum.zero ではなく 0 が返ってきますね。
ただ、この場合 default(TestEnum) も 0 になるみたいです。
なので 「enum もいけてる」 と言っていいとは思いますが、必ずしも enum の最初の値がデフォルトというわけではないようです。
青柳 臣一 (Shinichi Aoyagi)- 回答としてマーク 三輪の牛 2009年11月9日 2:20
すべての返信
-
Hongliangさんありがとうございます。即解決でした。
enumもいけてるみたいです。
object GetDefaultValue(Type type) { return type.IsValueType ? Activator.CreateInstance(type) : null; } public enum TestEnum { zero, one, two } [Test] public void test5() { Assert.That((int)GetDefaultValue(typeof(int)) == 0); Assert.That((TestEnum)GetDefaultValue(typeof(TestEnum)) == TestEnum.zero); Assert.That((string)GetDefaultValue(typeof(string)) == null); }
http://www.mahoroba.ne.jp/~mw_ken -
> enumもいけてるみたいです。
ちょっと気になったんですが、
public enum TestEnum { zero = 1, one, two }
こうすると、GetDefaultValue(typeof(TestEnum)) は TestEnum.zero ではなく 0 が返ってきますね。
ただ、この場合 default(TestEnum) も 0 になるみたいです。
なので 「enum もいけてる」 と言っていいとは思いますが、必ずしも enum の最初の値がデフォルトというわけではないようです。
青柳 臣一 (Shinichi Aoyagi)- 回答としてマーク 三輪の牛 2009年11月9日 2:20