【发布时间】:2016-10-04 09:46:34
【问题描述】:
我有一个函数:
public static bool Substr(string source, out string output, string begining, int length = -1, string end = null)
{
output = "";
int start_;
if ((start_ = source.IndexOf(begining, StringComparison.Ordinal)) != -1)
{
start_ += begining.Length;
if (length != -1)
{
if (start_ +length <= source.Length)
{
output = source.Substring(start_, length);
return true;
}
}else{
int end_;
if ((end_ = source.IndexOf(end, start_, StringComparison.Ordinal)) != -1)
{
output = source.Substring(start_, end_ -start_);
return true;
}
}
}
return false;
}
我目前用作:
string in = "aaaaaaa(bbbbbb)";
string result = Substr(in, out result, "(", -1, ")");
子字符串的结尾是 ")" 但我必须写 -1 我不使用因为第四个参数应该是 int
或者像这样:
string in = "aaaaaaa(bbbbbb)";
string result = Substr(in, out result, "(", 6);
子字符串的结尾是 "(" 之后的第 6 个字符
如何将第 4 个参数设为 int 或 string,以便将其用作:
string result = Substr(in, out result, "(", ")");
我的灵感来自于 c# 原生函数,例如 infexOf:
string i = "aaaaa(bbbb)";
int x = i.IndexOf("(", 3, StringComparison.Ordinal);
int y = i.IndexOf("(", StringComparison.Ordinal);
在这种情况下,第二个参数是 int 或 StringComparison。
如何让编译器根据参数数据类型而不是期望参数的确切顺序来决定? 请注意,我不是在寻找“命名和可选参数”https://msdn.microsoft.com/en-us/library/dd264739(v=vs.100).aspx
【问题讨论】:
标签: c# variables parameters optional-parameters