2011-08-29 6 views
3

나는 C# 배경에서 왔으므로 아직 내 VB에서 스너핑을하지는 않았다.
코드베이스 전체에 걸쳐이 연습을 실행했으며 체인에 사용 된 적이없는 입니다.
어떤 성능상의 결과가 발생하는지 궁금합니다.
VB -이 의심스러운 실행의 성능 결과는 무엇입니까?

Public Function Save(ByRef myObj As MyBusinessObject) As MyBusinessObject 
    'Do save stuff 
    'Return object we just saved 
    Return myObj 
End Function 

'usage 
myObject = Save(myObject) 

답변

4

나는이 만들 수 있습니다 어떤 성능 결과 (있는 경우) 궁금.

변수에 추가 할당을 추가하고 있지만 실제로 성능 문제가 발생하지는 않습니다.

public MyBusinessObject Save(MyBusinessObject myObj) 
{ 
    // Do save stuff 
    return myObj; 
} 

을 그리고 전화 : 효과적으로 그냥이 C# .NET을하고있어

myObj = Save(myObj); 

이 변수 참조를 재 - 설정하지만 메모리에서 같은 객체에 포인트, 그래서 작은 결과가있다. 그것은 (당신이 언급 한) 체인을 허용으로 그것은하지만, 인스턴스 메소드십니까 표준 관행이다, 예 :

당신이 체인하지 않을 때, 나는이가 제대로 이해하지 못하는 사람에 의해 수행되었다 의심
myObj.Load(...).DoSomething().Save() 

메소드를 호출 할 때 객체 참조가 작동하는 방법.

0

이러한 종류의 구조는 메소드가 시작한 객체와 다른 객체를 반환 할 가능성을 허용합니다. 이 방법이 "저장"방법에 유용 할지는 모르겠지만 "복사시 쓰기"의미를 얻기위한 수단으로 변경 가능하거나 불가능할 수있는 객체에 유용 할 수 있습니다. 예를 들어, 클래스가 일부 유형의 콜렉션이라고 가정합니다. "add"를 수행하는 올바른 방법이 "myThing = myThing.Add (newItem)"이라고 말하면 호출이 변경되어 원본 객체를 반환하는지 또는 포함 된 새 객체를 만들지 여부가 명시되지 않았습니다. 원래 클래스에있는 항목을 새 항목과 함께 사용하면 일부 클래스 인스턴스가 공유 불변으로 표시 될 수 있습니다 (이 경우 하나의 인스턴스가 동일한 인스턴스에 대해 많은 의미 상 서로 다른 참조를 가질 수 있음). unshared-mutable (복제 할 필요없이 항목을 변경할 수있는 경우)

관련 문제