我有一个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语句,但这看起来并不优雅。
任何想法。
答案 0 :(得分:2)
您可以在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
}