我在VB6应用程序中遇到了以下行.
mobjParentWrkBk.ExcelWorkBook.Application.Selection.Insert Shift:=xlToRight
不幸的是谷歌和其他搜索引擎并不是很有用,因为它们似乎省略了:=部分.
什么是C#等价物?
这是可选命名参数的Visual Basic语法.该Insert
函数有一个名为的参数Shift
,正在指定.
据我所知,C#没有可选命名参数的等价物.相反,您需要调用该Insert
方法,指定Type.Missing
除以外的所有参数Shift
.
另请参阅以下StackOverflow问题:VB.NET:=运算符
更新(2008-10-29):
C#4.0设置为引入可选和命名参数.在codebetter.com上查看此博客文章.
只是为了澄清约翰鲁迪的回应.
sytax是可选的(小'o'),这意味着你不必使用它.根据我的经验,大多数VB6编码器不使用语法,而是更喜欢常规的"未命名"参数.
如果确实选择使用它,则必须命名子过程调用中的所有后续参数.
无论是否使用VBA关键字Optional
(大写"O")声明相应的参数,都可以对所有参数使用指定的参数语法.例如,考虑这个(略微愚蠢的)VBA函数,它有两个参数,一个是必需的,一个是Optional
:
Private Function TimesTen( _ ByVal Value As Long, _ Optional ByVal Factor As Long = 10 _ ) As Long TimesTen = Value * Factor End Function
在VBA中,我可以使用命名参数为所需参数调用它(Optional
在VBA中可以简单地省略参数,与C#.NET不同,Type.Missing
必须使用所有省略的Optional
参数):
MsgBox TimesTen(Value:=9)
如果我想用'错误'顺序中的参数调用它(为什么??)我可以使用命名参数实现这一点:
MsgBox TimesTen(Factor:=11, Value:=9)
在命名的参数调用之后尝试使用常规的"未命名"参数调用会导致编译错误:
MsgBox TimesTen(Value:=9, 11)
那么,如果VB6编码器很少使用VBA编码器为什么使用命名参数,即使他们使用基本相同的语言?我认为这是因为MS Office应用程序的宏录制器生成的VBA倾向于(总是?)生成命名参数,许多VBA编码器以这种方式学习编程.