[英]C# Dictionary of classes with generic type
我正在嘗試在 C# 中創建一個遺傳算法,但我想將基因分成類(染色體)
基本上我有一個定義為的 DNA 類
public class DNA<T> { public T[] Genes { get; private set; } }
所以我可以擁有double、bool、int等類型的基因...
然后我想將染色體定義為
class Chromosome
{
Dictionary<string, DNA<T>> chromosomes;
}
所以我可以將多種 DNA 類型添加到染色體中,例如
chromosomes.add("brain", new DNA<double>(...));
chromosomes.add("traits", new DNA<bool>(...));
chromosomes.add("body", new DNA<int>(...));
字典值應該是object
還是應該創建一個到 DNA 類的IDNA
接口來保存對象,然后在每次需要時進行轉換? 或者有更簡單/最好的方法來做到這一點? 謝謝!
對於您編寫的多種基因,您可以使用接口/抽象類。
對於數據訪問而不是強制轉換,您可以編寫一個簡單的方法GetDNAOfType
:
using System;
using System.Collections.Generic;
using System.Linq;
public class Chromosome
{
Dictionary<string, DNA> chromosomes = new Dictionary<string, DNA>();
public IEnumerable<DNA<T>> GetDNAOfType<T>()
{
return chromosomes.Values.OfType<DNA<T>>();
}
public void AddDNA(string key, DNA dna)
{
if (chromosomes.ContainsKey(key))
chromosomes[key] = dna;
else
chromosomes.Add(key, dna);
}
}
public abstract class DNA
{
}
public class DNA<T> : DNA
{
public T[] Genes { get; private set; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.