• 締切済み

クラスの変換について

C#のクラスの変換についてお尋ねします。 switch文を使ってstring型で受けた値を int型に変換したいのですが、 下記コードの ” Convert.ToInt32(bloodType) ” のところでエラーになります。 どうすればint型に変換できるでしょうか? どなたか宜しくお願い致します。 string bloodType = ""; switch(bloodType) { case "A型": bloodType = "1"; break; case "B型": bloodType = "2"; break; case "O型": bloodType = "3"; break; case "AB型": bloodType = "4"; break; } int bloodTypeId = Convert.ToInt32(bloodType);

みんなの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

フォームにComboBox型のメンバーbloodTypeがある、という事ですね。で、その選択により振り分けたいと。 ならば、問題はここです。 > string bloodType = ""; > switch(bloodType) string bloodTypeの宣言によってよりスコープが内側であるこちらが優先され、ComboBox bloodTypeは隠蔽されてしまいます。 そしてstring bloodTypeの中身は常に空ですから、switchのいずれのcaseも通ることはありません。 普通にComboBox bloodTypeのTextプロパティを使ってswitchすればいいですよ。 switch(bloodType.Text) (以下略) ところで、これは元々のコードがStringをString.Formatに投げているのが悪いような気がしますし、 string sql = "insert into users (bloodtypeid) values (" + bloodType.Text + ")"; 選択に応じたInt型が欲しいのならComboBox.SelectedIndexを使うべきではありませんか? string sql = string.Format( "insert into users (bloodtypeid) values ( {0} )",bloodType.SelectedIndex + 1); #SelectedIndexは0 Originなので+1

  • php504
  • ベストアンサー率42% (926/2160)
回答No.3

ひょっとしてやりたいことは case "A型": bloodTypeId = 1; break; なのでは

inuoyogi7
質問者

補足

たくさんの回答ありがとうございます。 しかしながら質問が悪かったようなので補足させて頂きます。 まずやりたいことは下記の(1)と(2)です。 (1)入力フォームのからbloodtpeを選択する。(この時comboBoxより選択するのでstring型) (2)sqlserverに入力データをbloodtypyidとして保存する。(bloodtypyidはint型) <問題点> (2)の時に下記のようなsql文ではcomboBox1とblodtypeidの型が異なるのでエラーになります。 string sql =string.Format( "insert into users (bloodtypeid) values ( {0} )",comboBox1.text); よって先にint型に変更する必要があると考えたんですが型変換がうまくいきません。 //型変更 string bloodType = ""; switch(bloodType) { case "A型": bloodType = "1"; break; case "B型": bloodType = "2"; break; case "O型": bloodType = "3"; break; case "AB型": bloodType = "4"; break; } int bloodTypeId = Convert.ToInt32(bloodType); //sql文 string sql =string.Format( "insert into users (bloodtypeid) values ( {0} )",bloodtypeid); 宜しくお願いいたします。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

string bloodTypeに値を入れてるところが見当たりませんがそれはさておき。 Convertで変換するのが目的でないのなら、各caseでbloodTypeIdに値を設定してやればよいのではありませんか?

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

string bloodType = "0"; としておくとか。

関連するQ&A