2017-12-26 8 views
0

object expressions으로 새 객체 인스턴스를 만들 때 F #에서 System.Object 개의 메소드를 재정의 할 수 있습니다. 이것은 하나가 빠르게 ToString() 방법으로 인쇄하고자 할 때 매우 유용 할 수 있습니다 :`new object()`는 무엇을 위해 사용됩니까?

그러나
let obj = { new System.Object() with member x.ToString() = "F#" } 
printfn "%A" obj 

, 내가 잠금 문 옆에, C#에서 새로운 객체를 생성해야해야합니까? 이전 제네릭은 C# 언어에 추가로 기록 된 API와 상호 작용할 때

var obj = new object(); 
Console.WriteLine(obj); 
+0

잘 모르겠습니다. 당신이 우리와 공유하고 싶은 구체적인 예를 보았습니까? – JLRishe

+0

lock 명령문 옆에'object' 인스턴스를 만드는 것은별로 도움이되지 않습니다 ...'object' 인스턴스를 비교를위한 토큰으로 사용할 수는 있지만 그게 전부입니다. –

+0

아니요, 개인용 동기화 객체로 사용하는 것 외에 AFAIK는 런타임에 '객체'유형화 된 인스턴스를 실제로 사용하지 않습니다. 하지만 F #에서도 마찬가지입니다. 기능을 오버라이드하는 순간 객체가 멈추지 않습니까? 유일한 차이점은 F #이 제공하는 편리한 구문입니다. – InBetween

답변

1

일반적으로는, 하나는 주로 만 명시 적으로 객체 유형을 사용할 수 있습니다. 다음 관용구에서

내 개인적인 예 :이 경우

class NeedsToBeThreadSafe { 

    private static object _lock = new object(); 
    void ThreadSafeOperation() { 
      lock (_lock) 
      { 
       // Perform some useful work 
      } 
    } 
} 

, 내가 잠금을 구현하는 유일한 개체 _lock 원; 구성원이나 값이 필요하지 않으므로 오브젝트 유형이 적절합니다.

관련 문제