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);

A 回答 (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
    • good
    • 0

ひょっとしてやりたいことは


case "A型": bloodTypeId = 1; break;
なのでは

この回答への補足

たくさんの回答ありがとうございます。
しかしながら質問が悪かったようなので補足させて頂きます。
まずやりたいことは下記の(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);

宜しくお願いいたします。

補足日時:2009/05/23 13:01
    • good
    • 0

string bloodTypeに値を入れてるところが見当たりませんがそれはさておき。


Convertで変換するのが目的でないのなら、各caseでbloodTypeIdに値を設定してやればよいのではありませんか?
    • good
    • 0

string bloodType = "0";



としておくとか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング