替 Action/Func Parameter 设置名字
public static void MatchBracket(string value, string bracket, Action<int, int, string> action) { }
Action/Func 的 parameter 是不可以设置名字的, 只能声明类型, 对调用的人不友好.
Can you name the parameters in a Func<T> type?
有 2 个方法可以让它好一些.
1. 用 delegate 声明
public delegate void Action(int start, int end, string valueInBracket); public static void MatchBracket(string value, string bracket, Action action) { }
虽然在调用的时候依然无法智能提示, 但至少有个地方可以找到.
2. 用 Tuple
public static void MatchBracket1(string value, string bracket, Action<(int Start, int End, string ValueInBracket)> action) { }
调用时可以看到提示
缺点就是结构换了. 可能不习惯.
使用的时候要解构 (而且不能直接在 parameter 里解, 要拿出来才能解), 或者干脆把它当对象用会更好一些.
MatchBracket1(value, "{}", matchInfo => { var (start, end, valueInBracket) = matchInfo; });
它也不支持写 params