方法產生器會產生參數,並將 HasDefaultValue 設定為 false

System.Reflection.Emit.ConstructorBuilder 與 System.Reflection.Emit.MethodBuilder 現在產生方法參數,在反映動作中,ParameterInfo.HasDefaultValue 設定為 false。

先前的行為

先前ConstructorBuilder與MethodBuilder產生了方法參數的IL,其中參數的HasDefaultValue被設定為true。

新行為

從 .NET 8 開始,ConstructorBuilder 和 MethodBuilder 將會針對方法參數生成 IL,其中參數的 HasDefaultValue 設定為 false,這是預期的值。

推出的版本

.NET 8 Preview 5

破壞性變更的類型

此變更為行為變更。

變更的原因

先前的行為不正確,因為定義 方法或建構函式時未指定任何預設參數值。

如果您使用 TypeBuilder.DefineConstructor 或 TypeBuilder.DefineMethod,請確定所產生型別的方法的使用者不會依賴 ParameterInfo.HasDefaultValue 屬性為 true。

受影響的 API