C# – 冷知识 (新手)

替 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 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章