一些 API 引发 ArgumentNullException (.NET 7)
如果通过 null
输入参数进行调用,一些 API 现在会验证输入参数并引发 ArgumentNullException,而此前会引发 NullReferenceException。
旧行为
在以前的 .NET 版本中,在通过值为 null
的参数进行调用时,受影响的 API 会引发 NullReferenceException。
新行为
从 .NET 7 开始,在通过值为 null
的参数进行调用时,受影响的 API 会引发 ArgumentNullException。
更改类别
此更改会影响二进制兼容性。
更改原因
引发 ArgumentNullException 符合 .NET 运行时行为。 它提供了更好的调试体验,清晰地传达了是哪个参数引起的异常。
引入的版本
.NET 7
建议的操作
- 审查代码并在必要时更新,以防止向受影响的 API 传递
null
输入参数。 - 如果你的代码处理了 NullReferenceException,请替换或增加一个 ArgumentNullException 的处理程序。
受影响的 API
下表列出了受影响的 API 和特定参数。
方法/属性 | 参数名称 | 更改版本 |
---|---|---|
ComboBox.ChildAccessibleObject(ComboBox, IntPtr) | owner |
预览版 1 |
ControlPaint.CreateHBitmap16Bit(Bitmap, Color) | bitmap |
预览版 1 |
ControlPaint.CreateHBitmapColorMask(Bitmap, IntPtr) | bitmap |
预览版 1 |
DataGridViewEditingControlShowingEventArgs(Control, DataGridViewCellStyle) | control 或 cellStyle |
预览版 1 |
ToolStripArrowRenderEventArgs(Graphics, ToolStripItem, Rectangle, Color, ArrowDirection) | g |
预览版 1 |
ToolStripContentPanelRenderEventArgs(Graphics, ToolStripContentPanel) | g 或 contentPanel |
预览版 1 |
ToolStripItemRenderEventArgs(Graphics, ToolStripItem) | g 或 item |
预览版 1 |
ToolStripPanelRenderEventArgs(Graphics, ToolStripPanel) | g 或 toolStripPanel |
预览版 1 |
ListView.CheckedIndexCollection(ListView) | owner |
预览版 5 |