一些 API 引发 ArgumentNullException (.NET 7)

如果通过 null 输入参数进行调用,一些 API 现在会验证输入参数并引发 ArgumentNullException,而此前会引发 NullReferenceException

旧行为

在以前的 .NET 版本中,在通过值为 null 的参数进行调用时,受影响的 API 会引发 NullReferenceException

新行为

从 .NET 7 开始,在通过值为 null 的参数进行调用时,受影响的 API 会引发 ArgumentNullException

更改类别

此更改会影响二进制兼容性。

更改原因

引发 ArgumentNullException 符合 .NET 运行时行为。 它提供了更好的调试体验,清晰地传达了是哪个参数引起的异常。

引入的版本

.NET 7

受影响的 API

下表列出了受影响的 API 和特定参数。

方法/属性 参数名称 更改版本
ComboBox.ChildAccessibleObject(ComboBox, IntPtr) owner 预览版 1
ControlPaint.CreateHBitmap16Bit(Bitmap, Color) bitmap 预览版 1
ControlPaint.CreateHBitmapColorMask(Bitmap, IntPtr) bitmap 预览版 1
DataGridViewEditingControlShowingEventArgs(Control, DataGridViewCellStyle) controlcellStyle 预览版 1
ToolStripArrowRenderEventArgs(Graphics, ToolStripItem, Rectangle, Color, ArrowDirection) g 预览版 1
ToolStripContentPanelRenderEventArgs(Graphics, ToolStripContentPanel) gcontentPanel 预览版 1
ToolStripItemRenderEventArgs(Graphics, ToolStripItem) gitem 预览版 1
ToolStripPanelRenderEventArgs(Graphics, ToolStripPanel) gtoolStripPanel 预览版 1
ListView.CheckedIndexCollection(ListView) owner 预览版 5