pub.NumberChanged += sub1.OnNumberChanged;
pub.NumberChanged += sub2.OnNumberChanged;
pub.NumberChanged += sub3.OnNumberChanged;
應該不會讓人看得一會是這樣子不支持隱式,一會兒又有隱式的感覺了。當然,這只是我個人看法,樓主大可不必計較。
2、在獲得多個返回值與異常處理這一節當中,封裝后似乎還沒有沒有封裝前來的直接來得直觀易懂,其實有些時候,似乎簡單也是蠻好的。如果封裝,個人也認為直接返回List<>也許更直接吧。例如這樣子:
public static List<T> FireEvent<T>(Delegate del, params object[] args)
{
List<T> objList = new List<T>();
if (del != null)
{
Delegate[] delArray = del.GetInvocationList();
foreach (Delegate method in delArray)
{
try
{
// 使用DynamicInvoke方法触发事件
object obj = method.DynamicInvoke(args);
if (obj != null)
objList.Add((T)obj);
}
catch (Exception ex)
{
Console.WriteLine("Exception:{0}", ex.Message);
}
}
}
return objList;
}
然后調用時這樣子:
Program.FireEvent<string>(deg, 100)
3、在委托和異步調用這節,關於時間方面,樓主是不是筆誤呢,沒有使用異步的時候,應該是大概9秒吧,1+2+1+2+3的結果吧。而使用異步應該就是6秒,即1+2+3吧。
以上是陸續看完之后的想法!