2017-03-02 5 views
-1
enum conc 
    { 
     Maia, 
     Porto, 
     Valongo, 
     Gondomar, 
     Gaia, 
     Matosinhos 
    }; 



private string concelho; 

    public string Concelho 
    { 
     get { return concelho; } 
     set { concelho = Enum.IsDefined(typeof(conc), Concelho) ? value : " "; } 
    } 

私のために働いていない、私は学生であり、新しい "私"です。私の問題は検証です、何が間違っていますか?ありがとう解決済み - 文字列値が列挙型かどうかを確認する#

+0

は、 'enum.TryParse'を使用します。 – Venky

+1

あなたが設定しようとしている値ではなく、 'Concelho'の_current_の値が有効かどうかチェックしています。 –

+0

また、何かを覚えておいてください。 「うまくいきません」と言うと、あまりにも曖昧です。問題の診断に役立つエラーメッセージや予期しない結果などを含めるようにしてください。 – tinstaafl

答えて

0

concelhoフィールドに値を直接設定することはできません。最初に列挙型に解析する必要があるためです。

public string Concelho 
{ 
    get { return concelho; } 
    set 
    { 
     conc temp; 
     if(Enum.TryParse(value, true, out temp)) 
      cocelho = temp; 
    } 
} 
+0

完了を受け入れることができます! { conc temp; if(Enum.TryParse(value、true、out temp)) concelho = Convert.ToString(temp); } ありがとう、今私はコードを理解する必要があります。 –

+0

あなたの 'concelho'変数が' string'型の変数であることに気付きました。それを 'conc'とタイプするといいかもしれません。私の答えがうまくいくためには、あなたが本当にそれを@tinstaaflの答えで '文字列'にしたいなら –

0

元のコードは近いです。

enum conc 
{ 
    Maia, 
    Porto, 
    Valongo, 
    Gondomar, 
    Gaia, 
    Matosinhos 
}; 



private string concelho; 

public string Concelho 
{ 
    get { return concelho; } 
    set { concelho = Enum.IsDefined(typeof(conc), value) ? value : " "; } 
} 

言われていること:あなただけConcelhovalueに変更する必要があります。文字列表現が必要な場合は、単に型名concを作成し、ToString()メソッドを呼び出すことができます。

public enum conc 
{ 
    Maia, 
    Porto, 
    Valongo, 
    Gondomar, 
    Gaia, 
    Matosinhos 
}; 



private conc concelho; 

public conc Concelho 
{ 
    get { return concelho; } 
    set { concelho = value; } 
}