{ /// <summary>
// 扩展方法:静态类里面的静态方法,第一个参数类型前面加上this
//1 第三方的类,不适合修改源码,可以通过扩展方法增加逻辑
//优先调用实例方法,最怕扩展方法增加了,别人类又修改了
//2 适合组件式开发的扩展(.NetCore),定义接口或者类,是按照最小需求,但是在开发的时候又经常需要一些方法,就通过扩展方法 context.Response.WriteAsync 中间件的注册
//3 扩展一些常见操作
/// </summary>
public static class ExtendMethod
{
//int为空返回0
public static int ToInt(this int? i)
{
return i ?? 0;
}
//截取字符串
public static string ToLength(this string text, int length = 15)
{
if (string.IsNullOrWhiteSpace(text))
{
return "空";
}
else if (text.Length > length)
{
return ($"{text.Substring(0, length)}...");
}
else
{
return text;
}
}
//会污染基础类型,一般少为object 没有约束的泛型去扩展
//public static string ToStringCustom<T>(this T t)
//{
// if (t is Guid)
// {
// return t.ToString().Replace("-", "");
// }
// //.....
// else
// {
// return t.ToString();
// }
//}
//public static string ToStringNew(this object o)
//{
// if (o is null)
// {
// return "";
// }
// else
// {
// return o.ToString();
// }
//}
}
}
class Program
{
static void Main(string[] args)
{
{
int? i = 10;
Console.WriteLine(i.ToInt());
}
{
int? i = null;
Console.WriteLine(i.ToInt());
}
{
string text = "此时已莺飞草长爱的人正在路上";
Console.WriteLine(text.ToLength(10));
}
Console.Read();
}
}