1

次のコードを実行しています。

var guidStr = "C105534D-E001-46F1-874A-322E5E0E132C";
var guid1 = Guid.Parse(guidStr);
var guid2 = Convert.ChangeType(guidStr, typeof(Guid));
Console.WriteLine(guid1 + " " + guid2);

そして、guid1問題なく値を取得している間、guid2行は例外をスローします:

Invalid cast from 'System.String' to 'System.Guid'.
at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType)

違いはなんですか?

残念ながら、私はdll2回目の解析で失敗する与えられたを使用しているため、実装を実際に変更することはできず、入力のみを変更します。

4

1 に答える 1

10

Guid.Parse文字列を受け取り、文字列値をGuidオブジェクトに解釈します。Convert.ChangeType文字列インスタンス自体を に直接変更しようとしますGuid

料理本からレシピを読んで食事を作ることと、料理本自体を夕食に変えようとすることの違いを想像してみてください。

于 2017-01-08T06:06:29.490 に答える