1

と呼ばれる列挙型クラスがありGender、次のような値があります。

public enum GENDER
{
    MALE = 1,
    FEMALE = 2,
    OTHERS = 3,
}

そして、私のビジネスオブジェクトで、次のようなプロパティを作成しました。

public GENDER Gender
{
  get
  { 
      return gender; 
  }
  set 
  {
      gender = value; 
  }
}

私のデータベースでは、それはタイプintegerです。このためGenderに、add関数の値をその名前で割り当てようとしましたGender。しかし、それはエラーを示しています。列挙型を整数にキャストして、値が自動的に取得されるようにすることは可能ですか?

どうすればこれを修正できますか?

4

7 に答える 7

5

(int)Genderそれをします。プロパティの代わりに特定の値をキャストするには、次のようにし(int)GENDER.MALEます。

于 2012-06-22T15:15:12.197 に答える
3

列挙型はデフォルトでfromを「継承」します(別の整数型を選択しない限り、デフォルトintで格納されます)。そのため、問題なく簡単にキャストできます。intint

int i = (int)GENDER.MALE;

GENDER g = (GENDER)2;

暗黙的なキャストはサポートされていないことに注意してください。キャストは明示的でなければなりません。

キャストは範囲のチェックを行わないため、値をint持たないをエラーなしで変数にキャストできることに注意してください。GENDERGENDER

GENDER g = (GENDER)26;
于 2012-06-22T15:18:45.953 に答える
1

次の例で十分です。

int val = (int)Gender.Male;
int val2 = (int)_gender;

System.Enum次のような列挙値を検出して操作するのに役立つメソッドもあります。

Console.WriteLine("The values of the Gender Enum are: ");
foreach (int i in Enum.GetValues(typeof(Gender)))
{
    Console.WriteLine(i);
}
于 2012-06-22T15:18:55.530 に答える
1

キャストを使用して、整数値と列挙値の間で変換できるはずです。

int n = (int)GENDER.MALE;

GENDER g = (GENDER)1;

データベース列から読み取っている文字列(またはそれに関する任意の文字列)を処理している場合は、次の操作を実行できます。

GENDER g = (GENDER) Enum.Parse(typeof(GENDER), "MALE");

Enum.Parseはオブジェクトを返すため、最初にそれを列挙型にキャストする必要があることに注意してください。

于 2012-06-22T15:15:48.047 に答える
1

データベース値をgenderプロパティに設定する場合は、次のようにします。

yourintdatabasefiled = (int)GENDER.yourproperty
于 2012-06-22T15:17:23.300 に答える
1

(int)Genderでキャストの問題を修正できない場合は、コードにint.Parse(var、int)を追加してみてください。それは役に立つかもしれません...

于 2012-06-22T15:18:16.593 に答える
1

前の答えはその通りです。性別はintと同じように型になっているので、それに応じてキャストできます-どちらの方法でも:

(int)Gender = . . .
/* Or */
(Gender)int = . . .

だから、

int i = (int)GENDER.male;

i1に等しくなります。

そして同じ

Gender = GENDER.male;
i = (int)Gender;

iまた、1になります。

于 2012-06-22T15:22:49.407 に答える