현재 각 노드가 다른 노드와 동등한지를 알 수 있어야하는 노드의 트리 구조에 대해 작업하고 있습니다. 각 노드 클래스는 QueryNode의 서브 클래스입니다. 동등성을 확인하려면, 그들은 같은 서브 클래스이며, 동일한 멤버 값이있는 경우 노드는 비교 (관련된 더 많은 일을 거기 물론,하지만이 버그 나 그 일부) :이되지 않을 수 있습니다 느낄이 C# 코드에서 유형을 검사 할 수있는 대안이 있습니까?
class VersionNode : QueryNode
{
VersionModifier m_versionModifier;
internal VersionModifier VersionModifier
{ get { return this.m_versionModifier; } }
// ...
protected override bool AreMembersEquivalent(QueryNode other)
{
VersionNode otherNodeAsVersionNode = other as VersionNode;
if (otherNodeAsVersionNode == null)
return false;
else
return (this.m_versionModifier == otherNodeAsVersionNode.VersionModifier);
}
}
캐스팅이 필요하기 때문에 최적의 해결책이 될 수 있습니다. 이 일을 더 우아한 방법이 있습니까?
당신이 당신의 탭 크기 2 개 공간을 만들 경우보다 '우아한'모양의 코드 및 지역 변수 이름을 줄이십시오. – leppie
BTW 다른 인스턴스의 m_versionModifier에 직접 액세스 할 수 있습니다. 속성을 통해 갈 필요가 없습니다 :) 'this'도 불필요합니다. – leppie
Paul Graham의 Ansi Common Lisp을 읽은 후 멋진 코드를 선호합니다. –