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

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

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

列挙体がわかりません

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■89934 / inTopicNo.1)  列挙体がわかりません
  
□投稿者/ ルパン (15回)-(2019/01/22(Tue) 13:33:49)

分類:[.NET 全般] 

TextFormatFlags という列挙体(enum)がありますが

TextFormatFlags tfs の初期化はどうすればいいのでしょうか?


//TextFormatFlags tfs = 0;
//TextFormatFlags tfs = '';
//TextFormatFlags tfs = null;
// いずれもだめでした

if() tfs |= TextFormatFlags.VerticalCenter
else if() tfs |= TextFormatFlags.Left;
引用返信 編集キー/
■89935 / inTopicNo.2)  Re[1]: 列挙体がわかりません
□投稿者/ Hongliang (743回)-(2019/01/22(Tue) 13:40:42)
大抵の組み合わせ可能な列挙体には、NoneもしくはDefaultというメンバがあるのでそれでいいのではないでしょうか。

> TextFormatFlags tfs = 0;
これでも大丈夫なはずですよ?
引用返信 編集キー/
■89936 / inTopicNo.3)  Re[2]: 列挙体がわかりません
□投稿者/ ルパン (16回)-(2019/01/22(Tue) 13:46:20)
すみません。

TextFormatFlags tfs = 0;

でいけました。

さっきはエラーになったと思ったのですけど。
勘違いのようです。
解決済み
引用返信 編集キー/
■89937 / inTopicNo.4)  Re[3]: 列挙体がわかりません
□投稿者/ 魔界の仮面弁士 (2016回)-(2019/01/22(Tue) 14:20:01)
No89934 (ルパン さん) に返信
> TextFormatFlags tfs = 0;

Hongliang さんが書かれているように、
 TextFormatFlags tfs = TextFormatFlags.Default;
と書くこともできます。……でも、0 でも OK。


ちなみに、定数 0 な列挙値を持たない列挙型(MessageBoxOptions など)に対して
0 を代入したとしても、特にエラーになるわけではありません。
もし、変数の中身が定義されている値であるかどうかを実行時に調べたい場合には、
Enum.IsDefined メソッドを使うことができます。



> TextFormatFlags tfs = null;
もしも null を代入したいのなら
 TextFormatFlags? tfs = null;
と書くことになります。(今回は使わないと思いますが)

※ただし上記の場合、変数のデータ型は TextFormatFlags ではなく
 Nullable<TextFormatFlags> すなわち TextFormatFlags? 型となります。
 また、null 値に対して |= を実行すると、演算結果は null となります。



No89936 (ルパン さん) に返信
> TextFormatFlags tfs = 0;
> でいけました。

同じ結果になる別の書き方として、こういう記述もあります。


// どのバージョンでも使える方法
TextFormatFlags tfs1 = new TextFormatFlags();

// C# 2.0 以上で使える方法
TextFormatFlags tfs2 = default(TextFormatFlags);

// C# 7.1 以上で使える方法
TextFormatFlags tfs3 = default;
解決済み
引用返信 編集キー/
■89984 / inTopicNo.5)  Re[4]: 列挙体がわかりません
□投稿者/ ルパン (20回)-(2019/01/28(Mon) 15:26:17)
No89937 (魔界の仮面弁士 さん) に返信

補足ありがとうございます。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ