簡體   English   中英

C# 泛型類的字典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM