편집 :이 예제 프로그램은 linq에 합계 연산자가 있다는 것을 알고 있습니다. 그러나 필자는 포인터를 속성에 전달하는 방법에 대해 구체적으로 묻기 위해이 합계 알고리즘이 아닌 복잡한 함수를 수행하도록 요청했습니다.클래스 속성에 대한 포인터 전달
내가이 같은 클래스가 있다고 가정하자 :
class Point
{
double x {get; set;}
double y {get; set;}
}
내 메인 프로그램에서 내가 2 개 기능을했다
.double function1(List<Point> PointList)
{
double sum = 0.0;
foreach(Point p in PointList)
{
sum += p.x;
}
return sum;
}
double function2(List<Point> PointList)
{
double sum = 0.0;
foreach(Point p in PointList)
{
sum += p.y;
}
return sum;
}
이러한 기능은 하나가 X 값을 합산하고 다른 하나는 Y 값을 합산하는 것을 제외하고 완전히 동일합니다. 이것들이 매우 유사하기 때문에, 나는 기본적으로 Points of List를 전달하고 X 또는 Y 기반의 계산을하고 싶다는 것을 확인하기 위해 그것들을 결합하고 싶습니다.
switch 문을 넣고 열거 형을 기반으로 한 X 또는 Y인지 여부 또는 X 또는 Y를 수행하도록 지정하는 숫자인지 여부를 알 수 있습니다. 정상적인 함수를 사용하려면 대리자를 사용할 수 있다고 가정합니다. 그러나이 속성이 무엇인지, 그래서 어떻게 해석해야할지 모르겠습니다.
는 어떻게 내가 좋아하는 무언가로 그 기능을 결합 않습니다
double bothFunctions(List<Point> PointList, var propertyToUse)
{
double sum = 0.0;
foreach(Point p in PointList)
{
sum += p.propertyToUse;
}
return sum;
}
경우 X 또는 Y를
'PointList'는 분명히 'out'매개 변수가 될 수 없습니다. 이 코드는 괜찮습니까? – jdehaan
내 실제 프로그램에서, 그것은 밖으로 있어야하지만,이 예제에서는 그렇지 않습니다, 나는 그것을 제거합니다. – Xantham
@Xantham이 경우 포인터는 단지 델리게이트입니다. 내 대답을 보라. –