나는 큰 배열과 관련된 하우스 키핑을 주로 래퍼하는 클래스가 있습니다. ref 매개 변수를 사용하는 함수가 있습니다. 클래스의 인스턴스를 함수에 전달하면 배열을 보내려고합니다.명시 적 형변환을 ref 매개 변수로 전달 (C#)
나는 명백한 캐스트를 고려했다. byte [] ref 매개 변수가있는 함수가 있다고 가정 해 보겠습니다.
public void SomeFunction(ref byte[] someBytes);
오버로드 된 명시 적 캐스트가있는 클래스가 있습니다.
class SomeClass
{
byte[] someBytes;
public static explicit operator byte[](SomeClass someInstance)
{
return someInstance.someBytes;
}
}
는 지금은 매개 변수
SomeClass someInstance = new SomeClass();
SomeFunction(ref (byte[]) someInstance);
컴파일러 "는 심판 또는 축소 인수가 할당 변수 여야"불평으로 클래스와 함수를 호출합니다. 컴파일러를 제대로 마사지하지 못했거나 정말로 할 수 없는지 확실하지 않습니다.
이 나는 건물 또는 함수 반환 값을 고려,하지만 당신은 심판에 의해 그 전달할 수 없습니다 (그리고 나는 왜 ... 볼 자신을 교육 후)
내가 배열 공공 필드하게하지 않으려는 것 ,하지만 그것은 컴파일러를 만족시킵니다. 난 그냥와 배열을 참조하는 지역 변수를 만들 수 가정 ,하지만 ... 전에 각 함수 호출 후 코드의 추가 라인의
편집 : 그것은 된 SomeFuncion에 의해 작성되었습니다 협조 할 수 있습니다 제 3 자와 나는 그것을 변경할 수있는 권한이 없다. 더 나쁜 것은, 나는 그들의 매개 변수가 실제로 참조 될 필요가 있다고 생각하지 않는다. ...
그래서는 실용적인 솔루션이 공공 필드 또는 그의 유일한 목적에 전달하는 일부 지역 변수의 생성을 은폐하는 간단한 방법 어느 것이 밝혀졌습니다. 좀 더 파고 제네릭은 도움이 될 수 있습니다 않았다 , 너무. – ajs410
맞아요, someInstance를 업데이트하는 데 간단한 설정 도구 만 있으면 충분합니다. 또는 SomeFunction이 인수로 취하고 SomeInstance가 구현하고 해당 인터페이스를 통해 논리를 구현하는 인터페이스를 만들 수 있습니다. –