I'm trying to implement the NEAT Algorithm using c#, based off of Kenneth O. Stanley's paper. On page 109 (12 in the pdf) it states "Matching genes are inherited randomly, whereas disjoint genes (those that do not match in the middle) and excess
genes (those that do not match in the end) are inherited from the more fit parent."
Does this mean that the child will always have the exact structure that the more fit parent has? It seems like the only way the structure could differ from crossover was if the two parents were equally fit.
If by "structure' you mean the sequence of genes then yes, that's correct, the child will start with the same sequence of genes as its more-fit parent. The sequence in the child can be different from both of its parents' structures only if both parents are equally fit.
Even though the initial sequence of genes in the child is the same as the more-fit parent, the attributes (weight, enablement) within those genes won't necessarily be identical to the attributes in the more-fit parent. Matched genes (those with the same "innovation number" in the parents) can be taken into the child from the either parent, and the attributes of a matched gene in the less-fit parent might not be identical to the attributes of that gene in the more-fit parent.