命名属性和类型时出现问题。例如:
public class A
{
public class B { ... }
public B B; // << error
}
我可以像这样解决它
public class A
{
public B B;
}
public class B { ... } // move it outside
或者像这样
public class A
{
public class B { ... }
public B BB; // rename property
}
甚至
public class A
{
public class BB { ... } // rename type
public BB B;
}
外部移动类型声明是有风险的,因为类型可能有几个类在语义上需要相同名称 - &gt;冲突 - &gt;某些类类型的奇怪名称或将类放入名称空间内的必要性。
重命名..棘手。例如,重命名Shape
类型,必须为几个绘制数字的类声明:FigureLine
,FigurePoint
等。我可以称它们为ShapeLine
,{{1} } 等等。或者我可以将类型ShapePoint
重命名为
Shape
但现在如果我尝试使用它,那就变成public class FigureLine
{
public enum LineShape {Straight, Bend, Whatever};
public LineShape Shape {get; private set;}
}
- 双行就不好了。
重命名属性......怎么样?
答案 0 :(得分:3)
问题1:为什么会出错?
你有两个成员在同一个班级中都叫B
。 (类型也是成员。)除了方法重载之外,你不能这样做。
来自C#规范的第10.3节:
- 常量,字段,属性,事件或类型的名称必须与同一类中声明的所有其他成员的名称不同。
下一步:
问题2:你会怎么做?
如果你希望课程公开,我可能会把它变成顶级课程。
答案 1 :(得分:2)
1 - 将它移到外面解决它。我建议遵循以下原则:所有非私有类型都应该在他们自己的源文件中。
2 - 我不太清楚这里的问题是什么,即使将枚举移动到自己的文件中,我也会坚持你的名字:
public enum LineShape {Straight, Bend, Whatever};
public class FigureLine
{
public LineShape Shape {get; private set;}
}
LineShape
是一个比Shape
更好的名称,因为它更好地描述了枚举的用途(定义线条样式,而不是2D或3D形状)。