news 2026/6/17 16:15:28

扩展方法#x2B;泛型#x2B;委托#x2B;Lambda 联合使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
扩展方法#x2B;泛型#x2B;委托#x2B;Lambda 联合使用

笔记:SetDefaultValue方法拆解(扩展方法+泛型+委托+Lambda)

  1. 核心功能
    为Entity对象安全取值:指定字段名,有值则用委托转换后返回,无值/转换失败则返回默认值。

  2. 白话拆解(以取Name为例)
    原始冗余写法:
    string name;
    if (userEntity != null && userEntity.IsNotNull("Name"))
    {
    try { name = userEntity["Name"].ToString(); }
    catch { name = "未知"; }
    }
    else

封装后写法:
string name = userEntity.SetDefaultValue("Name", "未知", val => val.ToString());

  1. 关键语法拆解
  • 扩展方法:this Entity en → 静态类+this参数,可直接用实例调用;
  • 泛型:调用时自动推导类型(默认值"未知"→T=string,默认值0→T=int);
  • 委托Func<object, T>:
    ✅ Func<object, T> action → 委托容器(要求:装“接收object、返回T”的方法);
    ✅ val => val.ToString() → 匿名方法(Lambda简化写法,等价于 { return val.ToString(); });
    ✅ action(en[name]) → 调用委托(传入en[name](object)执行匿名方法,返回T);
  1. 实际开发优化点(必加)
    ① 加en == null判断,避免空引用;
    ② 加try-catch,处理转换失败(比如Age是"abc"转int);

本人是一枚还没毕业的实习生,目前在一家企业实习。今天看到代码中同事写的一些封装方法,在自学过程中都有接触过,但是联合起来使用看起来却很吃力,我就想记录一下自己的成长过程,路过的大佬还望多多担待~
笔记是ai美化后的,也是想通过学习一遍,再写点笔记加点自己的想法的,但是发现还是比较冗余。谢谢大家,阿里嘎多!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 15:33:46

Naver收不到验证码?全面分析原因

对于很多海外用户尤其是跨境营销、内容发布者和数据抓取从业者来说&#xff0c;注册/登录/实名认证Naver时收不到短信验证码这一问题几乎是“绕不过去的坎”。这一点不仅影响账号创建&#xff0c;还会影响后续的营销投放、内容发布或数据运营。这篇文章我们将一步步分析问题根源…

作者头像 李华
网站建设 2026/6/15 10:22:21

开源内容付费平台源码中内容、会员与权限的实现方式

在内容付费系统中&#xff0c;“内容是否可看”并不是一个简单的判断&#xff0c;而是内容规则、会员体系与用户权限三者协同工作的结果。一套成熟的开源内容付费平台源码&#xff0c;通常会在底层就把这三部分拆分清楚&#xff0c;避免后期业务扩展时出现逻辑混乱。 本文从源码…

作者头像 李华
网站建设 2026/6/16 12:04:49

动态规划之“最大子数组和”问题的三种算法

动态规划之“最大子数组和”问题的三种算法 一、关键概念 - 子数组&#xff1a;原数组中连续的一段元素。 - 子序列&#xff1a;元素顺序不变但不一定连续。 - 连续子序列&#xff1a;等价于子数组。 二、暴力算法 - 核心思路&#xff1a;枚举所有可能的连续子数组&…

作者头像 李华
网站建设 2026/6/15 10:27:31

无人机电调模块选型指南

飞控的电调模块是无人机动力系统的核心&#xff0c;它负责接收飞控指令&#xff0c;精确控制电机转速。以下是不同类型电调的特点与选型对比&#xff0c;以及关键的选型参数。 主流电调类型对比 关键选型参数 选择电调时&#xff0c;需关注以下几点以确保其与电机、电池及飞控…

作者头像 李华
网站建设 2026/6/15 10:23:51

Django项目,sqlite版本太低问题

报错 命令&#xff1a;python manage.py runerver 0.0.0.0:8001 原因&#xff1a;django版本更新&#xff0c;需要使用更高版本的sqlite&#xff0c;但是sqlite在python中被内置&#xff0c;无法直接升级卸载 Traceback (most recent call last): File "/home/project/new…

作者头像 李华
网站建设 2026/6/15 10:25:44

我做了一个本地AI搜索工具,今天正式开源了!

前言 花了一段时间&#xff0c;我终于把小遥搜索 XiaoyaoSearch做出来了。 这是一个支持语音、文本、图片多模态输入的本地AI搜索桌面应用。最特别的是&#xff0c;它100%通过Vibe Coding&#xff08;AI辅助编程&#xff09;实现&#xff0c;从零开始&#xff0c;所有源码、设…

作者头像 李华