执行一下看看,实际不是这样。当我们使用迭代器时,方法并没有立即执行并返回异常,而是在我们使用结果foreach (string s in result)时,才执行并返回异常。这种情况,会让我们对于异常的判断和处理出现错误。
这时候,局部函数就是一个好的解决方式:
static void Main(string[] args) { var result = GetItemSellingPice(null); foreach (string s in result) { Console.WriteLine(s.ToString()); } } private static IEnumerable<string> GetItemSellingPice(List<OrderDetails> lstOrderDetails) { if (lstOrderDetails == null) throw new ArgumentNullException(); return GetItemPrice(); IEnumerable<string> GetItemPrice() { foreach (var order in lstOrderDetails) { yield return ($"Item Name:{order.ItemName}, Selling Price:{order.SellingPrice}"); } } }现在,我们正确地在第一时间得到异常。
总结局部函数是一个非常强大的存在。它与Lambda表达式类似,但有更优的性能。
又是一个好东西,是吧?
微信公众号:老王Plus