c#におけるConvert.ChangeTypeの意味
2022-02-28 15:47:54
value = Convert.ChangeType(value, typeof(string))
What is the point of turning it this way? How does it differ from value.ToString()?
When is Convert.ChangeType typically used?
現在の型が string であるべきだとわかっている場合は意味がなく、ChangeType は現在の型が何であるべきかがわからない場合、たとえばジェネリックメソッド
T GetObject<T>(string str)
文字列型から指定されたT型への変換が必要で,その時点では
return (T)Convert.ChangeType(str, typeof(T));
strからTへの明示的な変換は絶対にできないので、ChangeTypeのみ。
変更タイプ は 値 として指定されたオブジェクトを 変換タイプ の汎用変換メソッドです。 値 パラメータは、任意のタイプのオブジェクトを指定することができます。 変換タイプ を表す任意の基本型またはカスタム型にすることができます。 タイプ オブジェクトを作成します。 変換がうまくいくように 値 を実装する必要があります。 IConvertible このメソッドは、単に対応する IConvertible メソッドが呼び出されます。 このメソッドでは 値 から 変換タイプ .
using System;
public class ChangeTypeTest {
public static void Main() {
Double d = -2.345;
int i = (int)Convert.ChangeType(d, typeof(int));
Console.WriteLine("The double value {0} when converted to an int becomes {1}", d, i);
string s = "12/12/98";
DateTime dt = (DateTime)Convert.ChangeType(s, typeof(DateTime));
Console.WriteLine("The string value {0} when converted to a Date becomes {1}", s, dt);
}
}
using System;
public enum Continent
{
Africa, Antarctica, Asia, Australia, Europe,
NorthAmerica, SouthAmerica
};
public class Example
{
public static void Main()
{
// Convert a Continent to a Double.
Continent cont = Continent.NorthAmerica;
Console.WriteLine("{0:N2}",
Convert.ChangeType(cont, typeof(Double)));
// Convert a Double to a Continent.
Double number = 6.0;
Try {
Console.WriteLine("{0}",
Convert.ChangeType(number, typeof(Content))));
}
catch (InvalidCastException) {
Console.WriteLine("Cannot convert a Double to a Continent");
}
Console.WriteLine("{0}", (Content) number);
}
}
// The example displays the following output:
// 5.00
// Cannot convert a Double to a Continent
// SouthAmerica
using System;
public class Example
{
public static void Main()
{
int? intValue1 = 12893;
double dValue1 = (double) Convert.ChangeType(intValue1, typeof(Double));
Console.WriteLine("{0} ({1})--> {2} ({3})", intValue1, intValue1.GetType().Name,
dValue1, dValue1.GetType().Name);
float fValue1 = 16.3478f;
int? intValue2 = (int) fValue1;
Console.WriteLine("{0} ({1})--> {2} ({3})", fValue1, fValue1.GetType().Name,
intValue2, intValue2.GetType().Name);
}
}
// The example displays the following output:
// 12893 (Int32) --> 12893 (Double)
// 16.3478 (Single)--> 16 (Int32)
ChangeType(オブジェクト、タイプ)
メソッドは、空の型を別の型に変換します。
但し、他の型を空の型に変換することはできません。
コンバージョンタイプ
は
Nullable<T>
をベース型とする。
この変換を行うには、強制型変換器(C#の場合)または変換関数(Visual Basicの場合)のいずれかを使用することができます。
次の例は、空の型との間の変換を説明しています。
using System;
public class Example
{
public static void Main()
{
int? intValue1 = 12893;
double dValue1 = (double) Convert.ChangeType(intValue1, typeof(Double));
Console.WriteLine("{0} ({1})--> {2} ({3})", intValue1, intValue1.GetType().Name,
dValue1, dValue1.GetType().Name);
float fValue1 = 16.3478f;
int? intValue2 = (int) fValue1;
Console.WriteLine("{0} ({1})--> {2} ({3})", fValue1, fValue1.GetType().Name,
intValue2, intValue2.GetType().Name);
}
}
// The example displays the following output:
// 12893 (Int32) --> 12893 (Double)
// 16.3478 (Single)--> 16 (Int32)
関連
-
C#とC++の型対応表まとめ
-
Unityがエラーを報告します。コレクションが変更されました。列挙操作が実行されない可能性があります。
-
インデックスが配列の範囲外であった。
-
vs2010 can't debug, can't enter breakpoint, breakpoint is invalid.
-
Javascriptインジェクション攻撃
-
GDI+でジェネリックエラーが発生しました@System.Drawing.Image.RotateFlip
-
C# Concurrency Safe Collection リストの代わりにConcurrentBagを使用する。
-
ContextSwitchDeadlockが検出された
-
CS0120 非静的フィールド、メソッド、またはプロパティにオブジェクト参照が必要です XX
-
c# ウェブページのバックエンドにデータを渡すいくつかの方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
C# indexof() の使用法
-
C#でUSBデバイスを操作する方法
-
エラーです。コレクションが変更されました。列挙操作が実行されない可能性があります。
-
不正なフォーマットでプログラムを読み込もうとした場合の問題を解決します。
-
C# データベース操作エラー。この接続に関連付けられた開いているDataReaderがすでにあり、これを閉じる必要があります...
-
C#のExcelエクスポートでHRESULT:0x800A03ECが発生する例外を解決する方法
-
MessageBoxメソッドを使用したASP.NET
-
ファイルまたはアセンブリ "Oracle "の読み込みに失敗しました。
-
c# で datagridview の行の高さを設定する
-
System.DllNotFoundException 問題分析と解決策