VB.NET在Office Interop场景下真的优于C#吗?
Excel Interop中Workbooks.Open方法的VB.NET与C#差异解析
你遇到的核心问题是不同版本C#的可选参数支持差异,具体说明如下:
那篇回答的内容针对的是C# 4.0之前的版本:
这类操作使用VB.NET会简单得多。VB.NET对可选参数的支持更完善,而C#则不然,因此需要使用Type.Missing。
在2010年发布的C# 4.0之前,C#不支持语言层面的可选参数,调用Excel Interop的Workbooks.Open时,必须为所有数十个可选参数显式传入Type.Missing占位,代码会非常冗长:// C# 3.0及更早版本的写法 var workbook = excelApp.Workbooks.Open( "test.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing );而同期的VB.NET已经原生支持可选参数,直接省略不需要的参数即可:
' VB.NET的写法(当时及现在都适用) Dim workbook = excelApp.Workbooks.Open("test.xlsx")现在你看到两者签名一致,是因为C# 4.0及以后版本已经支持可选参数:
随着C#引入可选参数和命名参数特性,现在的Excel Interop绑定(比如通过官方NuGet包)在C#中也会暴露带可选参数的方法签名,你可以像VB.NET一样直接省略不需要的参数,写法变得简洁:// C# 4.0及以后的写法 var workbook = excelApp.Workbooks.Open("test.xlsx");所以现在两种语言的方法签名体验已经一致,都是带有大量可选Object类型参数的形式,你并没有忽略什么,只是那篇回答的内容是针对更早的C#版本。
内容的提问来源于stack exchange,提问作者t3chb0t
相关产品推荐
相关产品推荐

