zoukankan      html  css  js  c++  java
  • C# 通过this关键字来扩展方法

    好处:不需要继承,对现有类型进行扩展

    public static class ExtString
        {
            public static string myTest(this String str)
            {
                return "[" + str + "]";
            }
            public static DataRow Expect(this DataRow dr, string fieldName)
            {
                if (dr != null)
                {
                    DataTable newDt = dr.Table;
                    newDt.Columns.Remove(fieldName);
                    DataRow newDr = newDt.NewRow();
                    foreach (DataColumn dc in dr.Table.Columns)
                    {
                        if (!dc.ColumnName.Equals(fieldName))
                        {
                            newDr[dc.ColumnName] = dr[dc.ColumnName];
                        }
                    }
    
                    return newDr;
                }
                return null;
    
            }
    
        }
    

      使用举例:

    string m1 = "ddd";
                MessageBox.Show(m1.myTest());
                
                
                DataTable dt = new DataTable();
                dt.Columns.Add("TID", typeof(int));
                dt.Columns.Add("Flg", typeof(int));
                dt.Columns.Add("TName", typeof(string));
                DataRow dr = dt.NewRow();
                dr["TID"]=1;
                dr["Flg"] = 1;
                dr["TName"] = "testaa";
                //dt.Rows.Add(dr);
    
                DataRow dr1 = dr.Expect("Flg");
    

    泛型类的扩展方法:

    public static class DataContractExtensions
    {
      
    //测试方法
      public static T Test<T>(this T instance) where T : Test2
      {
           T Res = default(T);
           try
           {
               Res.AttrTest = instance.AttrTest.Substring(0,2);
               
    //其他复杂逻辑...
          }
          catch
          { }
          return Res;
      }
    }
    public class Test2
    {
      public string AttrTest { set; get; }
    }
    

      

  • 相关阅读:
    求树的直径算法
    二叉排序树BST+求树深度算法
    HDU1114Piggy-Bank(完全背包)
    HDU1102(最小生成树Kruskal算法)
    NYoj289苹果(0-1背包)
    NYOJ201作业题
    C#发送邮件附件
    JS用户登录保存账号密码
    远程连接服务器
    博客园页面更新了
  • 原文地址:https://www.cnblogs.com/volts0302/p/5240244.html
Copyright © 2011-2022 走看看