DOBON.NETプログラミング掲示板過去ログ
object型のキャストについて
題名: object型のキャストについて
著者: kooo
日時: 2005/03/05 17:20:43
ID: 9607
この記事の返信元:
(なし)
この記事への返信:
[9609]
Re[1]: object型のキャストについて
じゃんぬねっと
2005/03/05 17:32:05
[9622]
Re[1]: object型のキャストについて
ant
2005/03/05 23:52:24
ツリーを表示
環境/言語:[C#, Windows XP, Oracle9i]
分類:[.NET]
はじめまして。
C#でobject型をint型に変換すると、以下のエラーになります。
「指定されたキャストは有効ではありません。」
object型をstring型に変換する処理は正常動作します。
以下ソースコード
conn.Open();
Oracle.DataAccess.Client.OracleCommand odpcmdSel = new OracleCommand();
object odpredSel;
odpcmdSel.Connection = conn;
odpcmdSel.CommandText = cmdDisplayName;
odpredSel = odpcmdSel.ExecuteScalar();
m_displayName = ((string)odpredSel).Trim(); ←ここはOK
odpcmdSel.CommandText = cmdUserID;
odpredSel = odpcmdSel.ExecuteScalar();
m_userID = (int)odpredSel; ←ここでエラー
odpcmdSel.Dispose();
以上、宜しくお願いします。
題名: Re[1]: object型のキャストについて
著者: じゃんぬねっと
URL:
http://jeanne.wankuma.com/
日時: 2005/03/05 17:32:05
ID: 9609
この記事の返信元:
[9607]
object型のキャストについて
kooo
2005/03/05 17:20:43
この記事への返信:
[9619]
Re[2]: object型のキャストについて
えムナウ
2005/03/05 22:14:41
[9626]
Re[2]: object型のキャストについて
kooo
2005/03/06 11:26:34
ツリーを表示
2005/03/06(Sun) 09:11:41 編集(投稿者)
こんにちは、じゃんぬねっと です。
■No9607に返信(koooさんの記事)
> C#でobject型をint型に変換すると、以下のエラーになります。
> 「指定されたキャストは有効ではありません。」
> object型をstring型に変換する処理は正常動作します。
それは、object型 に格納されているモノが、
string では有効だけど、int では (数値型では) 有効でないからです。
以下を試してみてください。
object objInt = 12345;
object objStr = "STRING";
int int1;
int int2;
try {
int1 = (int)objInt; // OK!
int2 = (int)objStr; // NG!
} catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
題名: Re[2]: object型のキャストについて
著者: えムナウ
URL:
http://www.geocities.jp/mnow/
日時: 2005/03/05 22:14:41
ID: 9619
この記事の返信元:
[9609]
Re[1]: object型のキャストについて
じゃんぬねっと
2005/03/05 17:32:05
この記事への返信:
(なし)
ツリーを表示
こんな感じでしょうか。
object objStr = "12345";
int int1;
int1 = Convert.ToInt32(objStr) ;
題名: Re[1]: object型のキャストについて
著者: ant
URL:
http://ant0x.udap.jp/
日時: 2005/03/05 23:52:24
ID: 9622
この記事の返信元:
[9607]
object型のキャストについて
kooo
2005/03/05 17:20:43
この記事への返信:
(なし)
ツリーを表示
> C#でobject型をint型に変換すると、以下のエラーになります。
> 「指定されたキャストは有効ではありません。」
> object型をstring型に変換する処理は正常動作します。
えムナウさんと同じことですが、objectの中にCLR型以外の型
(IConvertibleを実装していない型)が入っていた
場合Convertはエラーを投げてきます。従って、万全を期すならば
object o = hoge;
int i;
if(o is IConvertible)
{
i = ((IConvertible)o).ToInt32(null);
}
のようにしたほうがいいのかもしれません。
題名: Re[2]: object型のキャストについて
著者: kooo
日時: 2005/03/06 11:26:34
ID: 9626
この記事の返信元:
[9609]
Re[1]: object型のキャストについて
じゃんぬねっと
2005/03/05 17:32:05
この記事への返信:
(なし)
ツリーを表示
koooです。
皆様の返信を参考にすることで、
解決する事ができました。
また、分からない事があったらよろしくお願いします。
どうもありがとうございました。
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
はじめまして。
C#でobject型をint型に変換すると、以下のエラーになります。
「指定されたキャストは有効ではありません。」
object型をstring型に変換する処理は正常動作します。
以下ソースコード
conn.Open();
Oracle.DataAccess.Client.OracleCommand odpcmdSel = new OracleCommand();
object odpredSel;
odpcmdSel.Connection = conn;
odpcmdSel.CommandText = cmdDisplayName;
odpredSel = odpcmdSel.ExecuteScalar();
m_displayName = ((string)odpredSel).Trim(); ←ここはOK
odpcmdSel.CommandText = cmdUserID;
odpredSel = odpcmdSel.ExecuteScalar();
m_userID = (int)odpredSel; ←ここでエラー
odpcmdSel.Dispose();
以上、宜しくお願いします。