C#扩展方法和协变逆变

一.扩展方法

    public class Method
    {
        public void C01()
        {
            DateTime now = DateTime.Now;
            now.FmtDate();
        }

    }
    public static class ExMethod
    {
        /// <summary>
        /// 扩展方法的要素:
        /// 1.此方法必须是一个静态方法
        /// 2.此方法必须在静态类中
        /// 3.此方法的第一个参数必须以this开头,并且制定此方法是扩展自那个类型上
        /// 4.扩展方法扩展自哪个类型,就必须是此类型的变量来点出来
        /// 5.扩展方法中的this后面的参数不属于方法的参数 
        /// 6.如果扩展方法和实例方法的名相同,优先调用实例方法
        /// 7.扩展自父类上的方法,可以被子类的对象直接使用
        /// 8.扩展自接口类上的方法,可以被实现类的对象直接使用
        /// 9.扩展方法的本质,最终还是被编译器编译成了静态类点静态方法()
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static string FmtDate(this DateTime dt)
        {
            return dt.ToString("yyyy-MM-dd HH:mm:ss");
        }
        public static string FmtDate(this DateTime dt,string sf)
        {
            return dt.ToString("yyyy-MM-dd HH:mm:ss")+sf;
        }
        public static string FmtT<T>(this T t)
        {
            return "";
        }
    }

二.协变逆变

     /// <summary>
    /// 只能用在泛型接口和泛型委托中
    /// </summary>
    /// <typeparam name="T">只能做参数输入</typeparam>
    /// <typeparam name="V">只能做返回值</typeparam>
    public interface IOutIn<in T,out V>
    {

    }
    public delegate T DGen<out T,in V>(V v);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值