3

テーブルにchar型の列があります。C#でcharに変換したい。それはによって働いています

char gender = Convert.ToChar(dataRow["Gender"]);

しかし失敗しました

 char gender = (char)(dataRow["Gender"]);

列がint型の場合。(int)を使用してオブジェクトをキャストできます。なぜchar(例外)で失敗したのですか?

InValidCastException。

ありがとう、

4

5 に答える 5

3

datarow[column]タイプ'object'の式です

このConvert.ToChar()メソッドには、引数としてオブジェクトを受け取るオーバーロードがあるため、コンパイラーは何をすべきかを知っています。

はchar型への(char)dataRow[column]明示的なキャストですdataRow[column]が、オブジェクトからcharへの自動変換は存在しません

于 2012-06-18T14:56:56.377 に答える
1

Convert.ToCharテキスト値「A」を読み取り、値「A」の文字オブジェクトに変換します。

キャストでは、元の値が文字オブジェクトであると想定されます。エラーはそうではないことを示しています。

于 2012-06-18T14:50:55.570 に答える
1

どうやら値dataRow["Gender"])が含まれていintます。これは、それが「ボックス化された」int(オブジェクトとして格納された「int」)であることを意味します。これは「実際の」intにのみキャストでき、。などの他の何かに直接変換することはできませんchar

ただし、2段階のアプローチを使用できます。

char gender = (char)(int)dataRow["Gender"];
  • 最初に箱入りのintroを本物のroにキャストします
  • 次に、そのintを。に変換しcharます。
于 2012-06-18T15:31:28.123 に答える
0

が実際に(強く型付けされた)文字列である場合dataRow["Gender"]は、次を使用できます

char g = dataRow["Gender"][0];

その文字列の0番目の文字を取得します(文字列がnull空の場合は失敗します)。一方、dataRow["Gender"]が文字列であるが、と入力されているSystem.Object場合は、次を使用できます。

char g = ((string)dataRow["Gender"])[0];
于 2012-06-18T15:03:55.693 に答える
0

ほとんどの場合、セル実際の値はタイプです。この場合、取得します。objectInvalidCastException

Convert.ToCharは、代わりに、型を受け入れるオーバーロードがあるために機能しますobject

于 2012-06-18T14:55:22.393 に答える