C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 35 を表示中)
■17249 / )  Re[6]: 基本データ型をどう表現しますか?
□投稿者/ ネタ好き (123回)-(2008/04/20(Sun) 02:16:34)
2008/04/20(Sun) 02:32:34 編集(投稿者)
2008/04/20(Sun) 02:31:25 編集(投稿者)
2008/04/20(Sun) 02:18:15 編集(投稿者)

> C#のenumは基本型にInt32とかByteとか使えません。
> 「enum : Int32」ができてもいいと思う私ですが、

私もそう思います。
おそらくCLS準拠以上の実装をしている言語(UIntとか)とそうでない言語(符号なし数値が無い)の事を考慮したのでしょう。


> これって、全ての値型でできてもいいなぁと。
> つまり、「enum : Color」とかしたいのです。

うーん。それはちょっとまずいかも。
多分こんな事できるようになると思います。

public enum AppColor : Color {
LabelColor = Red,
ButtonColor = Gray
}

確かに便利かもしれません。
とはいえ、Colorとかは値型だけど、System.Enumから派生した型ですから、
これを列挙体に使うとなれば、事実上制限つき継承になってしまうと思います。
かといって、従来どおり継承なしとなれば、混乱が起きると思います。
こんな風に・・・

AppColor appClr = AppColor.LabelColor;
Color clr = (Color)appClr; ←エラー!

これを避けたかったのだと思います。
これを防ぐには、コンパイラは継承する列挙型を全部数値へ変換せねばなりません。それが嫌だったのかな?
でも、こんな風にしてくれてもいいのにとは思います。

AppColor appClr = AppColor.LabelColor;
Color clr = (Color)(Int32)appClr; ←エラーじゃない

初心者にはちょっときついかも?
初心者から掲示板に「どうしてColorは変換できないの?」って質問がきそう。
返信 編集キー/


管理者用

- Child Tree -