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#中部分方法的各种限制

1、C#中部分方法总是私有的? 假如你是类的设计者,设计出某个部分类如MyClass。当你把这个类设计完后,别人就可以用这个类。 对于类的使用者来说,类的外观就是各种public的属性、字段和方法。 ...
  • xiaoxuge0922
  • xiaoxuge0922
  • 2015年01月12日 12:09
  • 819

C#-#define条件编译

C#-#define条件编译 本文导读: C#的预处理器指令从来不会转化为可执行代码的命令,但是会影响编译过程的各个方面,常用的预处理器指令有#define、#undef、#if,#elif,...
  • YoungProgrammer
  • YoungProgrammer
  • 2017年03月17日 16:57
  • 2871

hdu5188 加限制的01背包问题

http://acm.hdu.edu.cn/showproblem.php?pid=5188 Problem Description As one of the most po...
  • u013573047
  • u013573047
  • 2015年03月16日 20:39
  • 892

最小二乘平差之附有限制条件的间接平差

上一篇文章中我简单的讲了一下间接平差,这篇文章我接着说一下附有限制条件的情况。 所谓附加的限制条件,就是在平差拟合的基础上,规范收敛路径,使其的收敛过程完全按照某一规范进行,这样就需...
  • fourierFeng
  • fourierFeng
  • 2015年09月10日 16:19
  • 1971

C# 编程指南——类和结构及其成员的可访问性

访问修饰符是一en些关键字,用于指定声明的成员或类型的可访问性。 public, protected,...
  • dongyue786
  • dongyue786
  • 2014年10月15日 18:53
  • 953

C# 在列表中按特性查找

声明:阅读本文需要 C# 泛型和委托的基本知识。 大家好! 列表在编程过程中应用极为广泛,而按照索引来查找显然不能满足所有需求,而 C#.NET 提供了很好的内建方法来方便程序员编写按照特性来...
  • shao_winds
  • shao_winds
  • 2013年08月24日 11:34
  • 1249

c# 条件编译(一)

注:在了解这部分之前,我也问了一部分人,都一致认为目前基本在c#不会用到这个。这块比如说在原来电脑内存比较小,而且有跨平台等操作这个比较多。 1:条件编译 条件编译属于编译预处理的范畴,与...
  • XuWei_XuWei
  • XuWei_XuWei
  • 2014年04月01日 10:56
  • 1956

C#条件编译详解

原文地址:http://www.cnblogs.com/artech/archive/2011/04/06/conditionalcompilation.html   从Trace和Debug来看...
  • upcwxiao
  • upcwxiao
  • 2015年04月07日 21:55
  • 1583

C# 给某个方法设定执行超时时间

http://www.cnblogs.com/08shiyan/archive/2011/07/30/2122183.html C# 给某个方法设定执行超时时间 在某些...
  • mosangbike
  • mosangbike
  • 2017年08月02日 10:59
  • 1049

shell中条件判断if中的-a到-z的意思

shell中条件判断if中的-a到-z的意思 [ -a FILE ] 如果 FILE 存在则为真。  [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。  [ -c FI...
  • dyzok88
  • dyzok88
  • 2015年09月21日 19:29
  • 2930
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# f泛型方法的限制条件
举报原因:
原因补充:

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