DOBON.NET DOBON.NETプログラミング掲示板過去ログ

enumのToString("G") した文字列を enum に戻したい

環境/言語:[.NET Framework 1.1 C# or VB]
分類:[.NET]

お世話になっております。

enum値をToString("G")によって文字列にしたものがあったとして、
それをenum値に戻すにはどうしたらいいでしょうか。

enum型の変数の入ったクラスをシリアライズすると、文字列で出力されて
それをまたデシリアライズできるので、なにか方法があるんだと思うんですが・・・。

むしろ、このデシリアライズを利用するしかないとかでしょうか。
最後の手段はそこだとは思っています。

.NET Framework 1.1のC#を使用しています。VBもわかります。
2005/01/23(Sun) 16:27:53 編集(投稿者)

> enum値をToString("G")によって文字列にしたものがあったとして、
> それをenum値に戻すにはどうしたらいいでしょうか。

たとえば、こんな感じで。

==================================
Imports System
Module VisualBasic
  Enum X As Integer
     Orator
     Benshi
  End Enum
  Sub Main()
    Dim Y As X = X.Benshi
    Dim S As String = Y.ToString("G")
    Dim O As Object = [Enum].Parse(GetType(X), S)
    Dim E As X = DirectCast(O, X)
    Console.WriteLine(String.Format("""{1}"" => {0:G}, {0:D}", E, S))
  End Sub
End Module
==================================
import System;
enum X :int { Orator, Benshi }
var Y : X = X.Benshi;
var S : String = Y.ToString("G");
var O : Object = Enum.Parse(Type.GetType("X"), S);
var E : X = X(O);
Console.WriteLine(String.Format('"{1}" => {0:G}, {0:D}', E, S));
==================================
using System;
class CSharp
{
  enum X : int { Orator, Benshi }
  static void Main() 
  {
    X Y = X.Benshi;
    String S = Y.ToString("G");
    Object O = Enum.Parse(typeof(X), S);
    X E = (X)O;
    Console.WriteLine(String.Format(@"""{1}"" => {0:G}, {0:D}", E, S));
  }
}
==================================
なるほど。intとかと同じ考え方だったんですね。
どうも最近、あの忌々しいVB6から.NETへ移行して以来、
staticメソッドのやりかたが、過去の苦い思い出を
思い出すようで心のどこかで避けている部分がありました。

もっと頭をやわらかくして臨みたいと思います。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板