C# lazy懒加载

延迟初始化 是一种将对象的创建延迟到第一次需要用时的技术,换句话说,对象的初始化是发生在真正需要的时候才执行,值得注意的是,术语 延迟初始化 和 延迟实例化 的意思是相同的——可以互换使用,通过使用 延迟初始化 技术,可以避免应用程序不必要的计算和内存消耗,这篇文章我们将会讨论如何在 C# 中使用 延迟初始化。

demo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class People
    {
        public int age { get; set; }

        public string name { get; set; }


        public List<Order> GetOrderDetailsForAuthor(int id)
        {
            return new List<Order>() { new Order() { id=id,name="222"},
                new Order() { id=id,name="222"},
                new Order() { id=id,name="222"},
            };
        }
//注意需要将懒加载赋值放在构造函数里
        public People()
        {
            orders = new Lazy<List<Order>>(() => GetOrderDetailsForAuthor(this.age));
        }

        public Lazy<List<Order>> orders;

        
    }
}

orders

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class Order
    {
        public int id { get; set; }

        public string name { get; set; }
    }
}

main.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            People people = new People() { age = 10, name = "E" };
            List<Order> orders= people.orders.Value;//执行加载,获取值
            Console.WriteLine(people.name);
        }
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#前端中实现懒加载Lazy Loading)可以避免一次性加载大量数据,从而提高应用程序的性能。在使用懒加载时,只有当需要访问某个数据时才会去加载它,而不是一次性加载所有数据。在SQL Server中,可以使用分页查询的方式实现懒加载。 以下是一个使用C#和SQL Server实现懒加载的示例代码: ``` //定义每页显示的记录数 int pageSize = 10; //定义当前页码 int pageIndex = 1; //查询总记录数 string countSql = "SELECT COUNT(*) FROM Table1"; int totalCount = ExecuteScalar(countSql); //计算总页数 int pageCount = (int)Math.Ceiling((double)totalCount / pageSize); //查询当前页数据 string dataSql = "SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY ID) AS RowNum, * FROM Table1) AS T WHERE T.RowNum BETWEEN @StartIndex AND @EndIndex"; int startIndex = (pageIndex - 1) * pageSize + 1; int endIndex = pageIndex * pageSize; SqlParameter[] parameters = { new SqlParameter("@StartIndex", startIndex), new SqlParameter("@EndIndex", endIndex) }; DataTable dt = ExecuteDataTable(dataSql, parameters); //绑定数据 GridView1.DataSource = dt; GridView1.DataBind(); ``` 在上述代码中,首先定义了每页显示的记录数和当前页码,然后查询总记录数并计算总页数。接着使用分页查询的方式查询当前页数据,并使用参数化查询来避免SQL注入攻击。最后将查询结果绑定到GridView控件上。 需要注意的是,上述代码中的ExecuteScalar和ExecuteDataTable方法需要根据实际情况进行实现。另外,在实际应用中,可以通过异步加载数据的方式来进一步提高性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值