XNA에서 Vector2 클래스에 대한 멋진 확장 방법을 추가하는 데 어려움을 겪고 있습니다. vector2와 float 입력을 기반으로 빼기 메서드를 갖고 싶습니다.
이것은 내가 이미 한 일입니다.
public static class Vector2Extensions
{
public static Vector2 Subtract(Vector2 v1, float a)
{
return new Vector2(v1.X - a, v1.Y - a);
}
}
그러나 어떻게 든 내가 그것을 다음과 같이 부르고 싶을 때 :
Vector2 x = Vector2.Subtract(new Vector2(2,0), 1.0f);
메서드에 대한 내 확장을 인식하지 못하는 것 같습니다 (XNA에는 기본적으로 2 개의 오버로드가 있으므로 세 번째 오버로드)
또 다른 질문은-연산자를 오버로드 할 수없는 이유입니다. (그게 내가 여기에 온 방법입니다)
도움을 많이 주시면 감사하겠습니다 ..
메서드를 확장 메서드로 만들기 위해 빠진 한 가지가 있습니다 this
. 첫 번째 인수 의 키워드는 다음과 같습니다.
public static Vector2 Subtract(this Vector2 v1, float a)
그런 다음 인스턴스에서 해당 메서드를 사용할 수 있습니다.
Vector2 x = new Vector2(2,0).Subtract(1.0f);
또는 정적 메서드로 호출하되 "확장"클래스 자체가 아닌 정적 클래스에서 호출합니다.
Vector2 x2 = Vector2Extensions.Subtract(new Vector2(2,0), 1.0f);
연산자는 불행히도 외부가 아닌 C #의 클래스 내부에서만 오버로드 될 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다