C# f泛型方法的限制条件

转载 2012年03月31日 13:56:39

http://mgc.ahau.edu.cn/article.asp?id=616

C#中使用where子句限制泛型方法的泛型类型。
1.要求泛型类型实现一个接口或派生于某个基类;
2.不能定义必须由泛型类型实现的运算符。

TestMethodTTwo.cs:

  1. using System;     
  2. using System.Collections.Generic;     
  3.     
  4. namespace Magci.Test.Collections     
  5. {     
  6.     //定义接口     
  7.     public interface IAccount     
  8.     {     
  9.         string Name     
  10.         {     
  11.             get;     
  12.         }     
  13.              
  14.         decimal Balance     
  15.         {     
  16.             get;     
  17.         }     
  18.     }     
  19.     
  20.     public class Account : IAccount     
  21.     {     
  22.         private string name;     
  23.         public string Name     
  24.         {     
  25.             get    
  26.             {     
  27.                 return name;     
  28.             }     
  29.         }     
  30.     
  31.         private decimal balance;     
  32.         public decimal Balance     
  33.         {     
  34.             get    
  35.             {     
  36.                 return balance;     
  37.             }     
  38.         }     
  39.     
  40.         public Account(string name, decimal balance)     
  41.         {     
  42.             this.name = name;     
  43.             this.balance = balance;     
  44.         }     
  45.     }     
  46.     
  47.     public class Algorithm     
  48.     {     
  49.         //声明泛型方法     
  50.         public static decimal Total<TAccount>(IEnumerable<TAccount> e)     
  51.             //使用where子句限制泛型类型     
  52.             where TAccount : IAccount     
  53.         {     
  54.             decimal total = 0;     
  55.             foreach (TAccount a in e)     
  56.             {     
  57.                 total += a.Balance;     
  58.             }     
  59.             return total;     
  60.         }     
  61.     }     
  62.     
  63.     public class TestMethodTTwo     
  64.     {     
  65.         public static void Main()     
  66.         {     
  67.             List<Account> accounts = new List<Account>();     
  68.             accounts.Add(new Account("Magci", 9999.99m));     
  69.             accounts.Add(new Account("Haha", 1241.33m));     
  70.             accounts.Add(new Account("Heihei", 1551.2m));     
  71.             accounts.Add(new Account("Kevin", 2643m));     
  72.     
  73.             //调用泛型方法     
  74.             decimal total = Algorithm.Total(accounts);     
  75.             Console.WriteLine("Total : {0:C}", total);     
  76.         }     
  77.     }     
  78. }   

相关文章推荐

c#方法异常和泛型

  • 2011-09-19 19:41
  • 2.59MB
  • 下载

C#内获取泛型方法及扩展

C#内我们可以通过反射来动态获取实例方法和静态方法,不管方法存在多少个重载都可以通过GetMethod内的第二个参数去筛选出所要获取的方法,代码如下: type.GetMethod("方法名", n...

C#中利用泛型扩展方法辅助枚举类型进行Flags处理

Flags的按位或操作是在API设计中很常见的一种模式,十分直观和方便。C#中的枚举类型也提供了同样的机制来使用Flags模式。但是想要在代码中执行一些Flags操作需要频繁的使用按位或、按位与和按位...

C# 使用反射动态调用泛型方法

通常我们能用到泛型方法时,如 fun() 如果泛型的T类型过多,如果使用swich会产生大量的冗余代码,通过反射动态的生成代码,可以减少大量的代码量。

C#控制台基础 helloworld之 泛型静态类与扩展方法输出

镇场诗:慈心积善融学习,技术誓为大家学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 ——————————————————————————————————————————————...

C# 反射调用带参数的重载的泛型方法

C# 反射调用带参数的重载的泛型方法。 以及调用时抛出:不能对 ContainsGenericParameters 为 True 的类型或方法执行后期绑定操作异常的解决办法。 话不多说,上代码!...

C#中泛型List排序方法 实现.

参考该篇博客,对其的实现方法进行了完善。http://pwcrab.blog.163.com/blog/static/169903822201051044525312/ 测试代码是在Unity中测试...

泛型方法(C# 编程)

泛型方法是使用类型参数声明的方法,如下所示: C#static void Swap(ref T lhs, ref T rhs) { T temp; temp = lhs; l...

C# 泛型方法中反射常用方法浅析

C# 泛型方法中反射常用方法浅析http://developer.51cto.com  2009-08-24 16:19  佚名  MSDN  我要评论(0) C# 泛型方法中反射常用方法都是什么呢...
  • rise51
  • rise51
  • 2011-03-17 16:03
  • 1384
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)