泛型约束以及带委托的泛型方法
2015-11-22 15:56
246 查看
namespace start006 { /// <summary> /// 声明一个带有两个属性的接口 /// </summary> public interface IAccount { string Name { get; } int Money { get; } } /// <summary> /// Account类实现上面的接口带一个构造函数 /// </summary> public class Account:IAccount { private string name; private int money; string IAccount.Name { get { return name; } } int IAccount.Money { get { return money; } } public Account(string n, int m) { name = n; money = m; } } /// <summary> /// 算法类实现一个带约束的泛型方法 /// </summary> public static class Alogrithm { public static int AccumulateSimple<TAccount>(IEnumerable<TAccount> source) where TAccount:IAccount { int sum = 0; foreach (var it in source) { sum += it.Money; } return sum; } } /// <summary> /// 主程序测试类 /// </summary> class Program { static void Main(string[] args) { List<Account> accountSum = new List<Account>(); accountSum.Add(new Account("xiaolan",45)); accountSum.Add(new Account("kenan", 78)); Console.WriteLine(Alogrithm.AccumulateSimple(accountSum)); Console.Read(); } } }
namespace start007 { /// <summary> /// Account类 /// </summary> public class Account { public string name; public int money; public Account(string n, int m) { name = n; money = m; } } /// <summary> /// 算法类实现一个带委托的泛型方法 /// </summary> public static class Alogrithm { public static T2 AccmulateSimple<T1,T2>(IEnumerable<T1> source,Func<T1,T2,T2> action) { T2 sum = default(T2); //default foreach(T1 item in source) { sum = action(item,sum); } return sum; } } /// <summary> /// 主程序测试类 /// </summary> class Program { static void Main(string[] args) { List<Account> accountSum = new List<Account>(); accountSum.Add(new Account("xiaolan",45)); accountSum.Add(new Account("kenan", 78)); Console.WriteLine(Alogrithm.AccmulateSimple<Account,int>(accountSum,(item,sum)=>sum+item.money)); Console.Read(); } } }
相关文章推荐
- JAVA泛型—— 3fe8 转
- JAVA泛型详解——转
- 编写高质量代码改善C#程序――使用泛型集合代替非泛型集合(建议20)
- C#通过反射创建自定义泛型
- C#泛型用法实例分析
- C语言泛型编程实例教程
- C# 泛型的简单理解(安全、集合、方法、约束、继承)分享
- C#泛型Dictionary的用法实例详解
- C#泛型和反射实例解析
- C#泛型实例详解
- .NET开发基础:从简单的例子理解泛型 分享
- RadioButtonList绑定图片及泛型Dictionary应用
- Swift编程中的泛型解析
- C#实现利用泛型将DataSet转为Model的方法
- 关于C#泛型列表List<T>的基本用法总结
- list泛型自定义排序示例
- .NET基础之自定义泛型分析
- C#基础之泛型委托实例教程
- Lua中的迭代器和泛型for实例
- 使用.NET中的Action及Func泛型委托深入剖析