我不确定提问的最佳方式,所以我将从一个例子开始:
public static void ConvertPoint(ref Point point, View fromView, View toView) {
//Convert Point
}
这个调用是递归的。您传入一个点,它将其相对于
fromView
转换为相对于toView
(只要其中一个是另一个的祖先)。这个调用是递归的,逐级转换点。我知道,可变结构体很糟糕,但我使用可变点的原因是我只需要创建一个点并将其传递给递归调用,这就是我使用ref的原因。这样做是否正确,或者使用out参数、或者简单地声明该方法返回一个点会更好呢?
我不太熟悉在这些情况下如何处理结构体与类的区别。这是从Java移植过来的代码,显然点必须是一个类,因此重复使用相同的临时点比创建新点更有意义,而后者必须在每次调用时进行垃圾回收。
这可能是一个令人困惑的问题,为了增加一些混乱,当我在这里时,我应该保留一个临时静态
Point
实例以进行快速转换,还是每次调用这个方法时都创建一个新的点(它被频繁调用)?