IConvertibleインタフェイス型のリストと値型リストの変換について
C#において、値型(int, double...)を利用したリストを処理するメソッドを作るために、IConvertibleインタフェイス(doubleに変換して計算する)を利用したのですが、以下のようなエラーを出力してしまいます。
'System.Collections.Generic.List<int>' から 'System.Collections.Generic.List<System.IConvertible>' に変換できません
コードの例は以下の通りです。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<int> iList = new List<int>();
iList.Add(100);
iList.Add(200);
iList.Add(300);
iList.Add(400);
iList.Add(500);
//平均を求める
double aver = average(iList);
Console.Out.WriteLine("リストの中身を表示します:");
for(int i = 0; i < iList.Count; i++)
{
Console.Out.WriteLine("iList[" + i + "] = " + iList[i]);
}
Console.Out.WriteLine("以上の平均は" + aver + "です");
//出力表示
Console.ReadKey();
}
/// <summary>
/// 指定された数値のリストの平均値を求めるメソッドです。
/// </summary>
/// <param name="list">数値型のリスト</param>
/// <returns>平均値(倍精度浮動小数)</returns>
private static double average(List<IConvertible> list)
{
double rtn = 0;
foreach (IConvertible ic in list)
{
rtn += ic.ToDouble(CultureInfo.CurrentCulture.NumberFormat);
}
rtn /= list.Count;
return rtn;
}
}
}
iListの型をList<IConvertible>に変更したところコードは問題なく動きましたが、釈然としません。int型はIConvertibleインタフェイスを実装しているのに何故このようなエラーが出てしまうのでしょうか? どなたかご教示お願いいたします。
初めての質問なので拙い点等ございましょうが、よろしくお願い申し上げます。