【问题标题】:Converting VB6 Optional Parameter to C# [duplicate]将VB6可选参数转换为C# [重复]
【发布时间】:2015-04-12 02:45:05
【问题描述】:

我有一个 VB6 函数,它有一个可选的日期间隔参数,我正在尝试将其转换为 C#。我也不确定在代码中处理这个问题的最佳方法。这是VB函数声明:

Private Function ReplaceDateTextNonBinary(psTable as String, psColumn as String, psColumnOffSet as String, psDateFormat as String, Optional psInterval as String = "n")

此函数在以下 DateAdd 方法调用中使用可选参数。

DateTime = DateAdd(psInterval, oSQL.Value(psColumnOffset), Date$)

这是我计划使用 params 关键字将函数声明转换为 C# 的方式。

private static bool ReplaceDateTextNonBinary(string psTable, string psColumn, string pColumnOffset, string psDateFormat, params string psInterval)

我认为这会起作用,但我不知道如何编写将任何日期间隔作为字符串的代码。我正在考虑使用 switch...case 语句,但这似乎不是很优雅。

任何想法。

【问题讨论】:

  • C# params 关键字与ParamArray VB 关键字相似,所以这里不是你要找的。​​span>
  • 请在寻求帮助之前使用 Google。显而易见的查询是“c# 可选参数”。拿下第一击。
  • 很抱歉发布了重复的问题。我整天大部分时间都在谷歌和这里寻找,但一无所获。我不确定如何更好地解决这个问题。

标签: c# vb.net vb6


【解决方案1】:

您可以像这样在 C# 中使用可选参数:

private static bool ReplaceDateTextNonBinary(string psTable, 
                                             string psColumn, 
                                             string pColumnOffset, 
                                             string psDateFormat, 
                                             string psInterval = "n")

如果未传递可选参数,它将获得值"n"。请注意,可选参数必须在方法签名中最后列出。另请注意,这是 C# 4.0 的一项功能,不适用于早期版本的 C#(在这种情况下,简单的重载可能是您最好的选择)。

见:Named and Optional Arguments (C# Programming Guide)

4.0 之前的方法是这样的:

private static bool ReplaceDateTextNonBinary(string psTable, 
                                             string psColumn, 
                                             string pColumnOffset, 
                                             string psDateFormat)
{
    return ReplaceDateTextNonBinary(psTable,
                                    psColumn,
                                    pColumnOffset,
                                    psDateFormat,
                                    "n");
}

private static bool ReplaceDateTextNonBinary(string psTable, 
                                             string psColumn, 
                                             string pColumnOffset, 
                                             string psDateFormat, 
                                             string psInterval)
{
    // your implementation here
} 

【讨论】:

    猜你喜欢
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多