使用ref
是不好的编程习惯吗?我正在对实际上大量使用 ref 的旧代码进行一些重构。我已使用 Microsoft 所有规则集打开代码分析,并且规则说“不要通过引用传递类型”
原因:公共类型中的公共或受保护方法具有 ref 参数,该参数采用原始类型、引用类型或不是内置类型之一的值类型。
为什么真的很糟糕?我可以在我的私有方法或内部方法中使用它们吗?在私有/内部方法中使用 ref 将是良好的编程习惯,或者也不是?
编辑:这是一些示例,
public void DoAutoScrollReverse(Rectangle rectangle, int xPosition, int yPosition,
ref int deltaX, ref int deltaY)
{
}
public bool GetPointCoords(Graphics g, Point pMouse, DisplayBlock2D aBlock,
ref Point3MD pt, ref DisplayPoint2D 2dPoint, ref double gapPos)
{
}
这些函数内部发生的事情是它们正在被初始化、设置或其他。
更新:为什么我使用 ref?其实我不是。我需要重构它的旧代码。我摆脱了一些方法,但是像第二个示例中给出的复杂功能我不能。有一个函数返回 bool(告诉操作成功与否),并具有 3 个不同对象的 ref 值。我应该在这里做什么?使其私有/内部(在私有/内部良好实践中使用 ref 吗?)