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

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

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

Re[4]: 列挙体がわかりません


(過去ログ 155 を表示中)

[トピック内 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 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -