关闭

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

标签: c#c
611人阅读 评论(0) 收藏 举报
分类:

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. }   

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:89427次
    • 积分:1056
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:45篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论