我在c#中创建了一个非常简单的方法,但是我在页面上的任何地方都使用了它。有没有一种方法可以减少方法调用,我的意思是方法一旦调用,返回值存储在某个地方,而我使用该值。这是我的代码。

我已经声明了一些这样的公共财产。

public OrderCollection GetAllClickCollectOrders
{
    get
    {
        return GetClickCollectOrderDetails(Session["SelectedStorePostCode"].ToString());
    }
}

public OrderCollection GetShippedClickCollectOrders
{
    get
    {
        return GetShippedClickCollectOrderDetails();
    }
}


AND这里是方法。

protected OrderCollection GetClickCollectOrderDetails(string postcode)
{
    // some database ziggy wiggy...

    return cncOrderCol;
}

protected OrderCollection GetShippedClickCollectOrderDetails()
{
    // some database ziggy wiggy...

    return cncShippedOrderCol;
}


所以,可以说,当我想要这样收集的东西时。

BindGridView(GetAllClickCollectOrders);
orderCount.Text = "Total orders placed: " + GetAllClickCollectOrders.Count;

if (isShipped.Checked)
{
    BindGridView(GetShippedClickCollectOrders);
    orderCount.Text = "Total orders shipped: " + GetShippedClickCollectOrders.Count;
}




因此,每当我使用该属性时,它每次都会调用方法并进入数据库并返回结果。但是,除非我更改Session["SelectedStorePostCode"]值,否则大多数情况下结果都是相同的。我在想是否有更好的方法将结果存储在某个地方并使用它。

注意:代码工作正常,但我正在寻找更好的性能。多谢你们...

最佳答案

您似乎想要的是缓存数据库调用的结果。

您可以通过将数据库中的结果存储在Cache类的实例中来实现。

可以将Cache项目设置为在一定时间后过期,因此可以确定,如果基础数据已更改,则该值将每隔很长时间更新一次。

这适用于所有用户(会话)之间共享的项目-如果希望缓存用户之间唯一的项目,则可以将值存储在会话变量中,尽管这可能会导致Web服务器上的内存压力。

关于c# - 代码优化:通过存储返回值减少方法调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14498137/

10-11 23:07
查看更多