.NET高级语法:委托(switch,错误处理,缓存处理,数据库调用处理),linq to object
2022/6/24 2:19:24
本文主要是介绍.NET高级语法:委托(switch,错误处理,缓存处理,数据库调用处理),linq to object,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.委托
2.linq
3.linq to sql
4.AOP封装-委托嵌套
委托封装:能把一个方法包装成一个变量,然后传递,所以用委托来完成逻辑拆分
把固定的固定,只关注通用逻辑,完成固定,把可变的提出交给调用者指定,更稳定,这就是代码封装
应用场景:
switch case
1.student.SayHi("李恒", Student.PeopleType.Chinese)
Action<string> action = new Action<string>(s => Console.WriteLine($"早上好,{s}"));
student.SayHiAdvanced("李恒", s => Console.WriteLine($"早上好,{s}"));
public void SayHiAdvanced(string name,Action<string> sayHiByCountry)
{
console.WriteLine("prepare say hi");
sayHiByCountry.Invoke(name);
console.WriteLine("after say hi");
}
通用缓存读取
2.错误处理:
//new Action(() =>
//student.SayHi("李恒", Student.PeopleType.Chinese)
//).SafeInvoke();
/// <summary>
/// 提供安全调用,抓取任何异常,打印日志
/// </summary>
/// <param name="act"></param>
public static void SafeInvoke(this Action act)
{
try
{
act.Invoke();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
3. 缓存处理
public static object ShowCache()
{
string key = "ShowCache-1123";
if (DelegateExtend.Exist(key))
{
return DelegateExtend.Get(key);
}
else
{
Thread.Sleep(1000);
object oValue = "ssdqdhadshaksfhkasf";
DelegateExtend.Add(key, oValue);
return oValue;
}
}
4. 数据库调用处理
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="func"></param>
/// <returns></returns>
public static T Excute<T>(string sql, Func<SqlCommand, T> func)
{
using (SqlConnection conn = new SqlConnection(""))
{
//conn.Open();
SqlTransaction trans = conn.BeginTransaction();
try
{
SqlCommand command = new SqlCommand(sql, conn);
T t = func(command);
trans.Commit();
return t;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
trans.Rollback();
throw ex;
}
}
}
5.LINQ TO OBJECT:封装一系列的操作,内存数据;linq to sql:llinq操作数据库;linq to redis,linq to excel; linq to everthing
public static class CustomLinqExtend
{
public static List<T> ElevenWhere<T>(this List<T> lists, Func<T, bool> func)
{
List<T> tList = new List<T>();
foreach (var student in lists)
{
if (func.Invoke(student))
{
tList.Add(student);
}
}
return tList;
}
}
这篇关于.NET高级语法:委托(switch,错误处理,缓存处理,数据库调用处理),linq to object的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID
- 2024-01-23用CI/CD工具Vela部署Elasticsearch + C# 如何使用
- 2024-01-23.NET开源的简单、快速、强大的前后端分离后台权限管理系统