码迷,mamicode.com
首页 > 其他好文 > 详细

局部函数和委托

时间:2021-02-05 10:58:16      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tail   items   ring   需要   委托   new   cal   stat   for   

1》局部函数存于堆栈,委托存于堆

2》局部函数在IL只是单纯调用,Lambda会被转成委托和类

3》局部函数在IL中用call调用,不需要校验实例是否存在,而委托在IL中用callvert调用,是需要校验是否有实例存在

4》使用迭代器时,异常的不会立即返回,而局部函数则会

例如:

1、这个在if (lstOrderDetails == null) throw new ArgumentNullException();不会返回异常,只会在foreach (var order in lstOrderDetails)触发异常

private static IEnumerable<string> GetItemSellingPice(List<OrderDetails> lstOrderDetails)
{
    if (lstOrderDetails == null) throw new ArgumentNullException();

    foreach (var order in lstOrderDetails)
    {
        yield return ($"Item Name:{order.ItemName}, Selling Price:{order.SellingPrice}");
    }
}

2、这个则会在if (lstOrderDetails == null) throw new ArgumentNullException();触发异常

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}");
        }
    }
}

局部函数和委托

标签:tail   items   ring   需要   委托   new   cal   stat   for   

原文地址:https://www.cnblogs.com/caihuaxing/p/14375898.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!