ToString()은 리플렉션을 사용한다는 것을 읽었습니다. (리플렉션을 사용하는 이유는 알 수 없으므로 호출되는 객체 주위에 따옴표를 넣어야하지만). 이 증거가 있습니까? 그리고 .ToString() (아마도 Convert.ToString()을 호출해야합니까?)을 호출 할 때 성능 저하가 있습니까?ToString() gotchas
답변
, 당신은 구현이 다음과 같이 보입니다, Object.ToString()
를 호출 결국 에". 그 결과를 달성하기 위해, 그것은 반 성적 런타임 타입 정보를 얻을 수 있어야하고 다시이 같은 보이는 그에 ToString()
전화 :
public override string ToString()
{
return ("Type: " + this.Name);
}
언제 당신이 뭔가를 반사 통과 성능의 비트가를 패널티가 있지만,이 경우에는 실제로는 문제가 될만한 크기가 아닙니다. 아주 빡빡하고 매우 큰 루프 내부에서 그렇게하지 않는 한.
성능에 문제가 있습니까? 당신이 달성하고자하는 것은 당신이 당신이 제공하는 재정의 된 버전을 호출하기보다는 Object.ToString()
으로 전화하기를 원하고있는 것입니까?
나는 그것이 반사를 사용하여 끝나는 ToString()을 재정의하지 않는다고 생각한다. 당신이 있다면
:
public class SomeObject
{
public void SomeMethod();
}
void program
{
SomeObject o = new SomeObject();
Console.WriteLine(o.ToString());
}
당신은 객체 O의 유형을 알고 반사를 사용해야합니다. 의미있는 문자열 표현을하기 위해해야하는 ToString()을 재정의하면 작성한 코드가 직접 반향 제거를 통해 호출됩니다.
public virtual string ToString()
{
return this.GetType().ToString();
}
[MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical]
public extern Type GetType();
단순히 "개체 주위에 따옴표를 넣지 않는 방법은이
라고 : 당신이ToString()
메소드를 오버라이드 (override)하지 않는 경우
실제로 기본 구현에서는 리플렉션을 사용하지 않습니다. 내부 호출로 표시된 GetType()을 호출합니다. CLR에 직접 내장 된 기능 그래서 코드 경로조차도 반사에 기반한 성능 저하를 겪지 않아야합니다. –
- 1. ASP/VBScript "Gotchas"
- 2. jQuery & ASP.Net 리소스 & Gotchas
- 3. 오라클 to Postgres Gotchas
- 4. 공통 관리 C++ gotchas
- 5. 구두점이있는 Lucene gotchas
- 6. 100.toString 대 100 [ 'toString']
- 7. ToString ("0") 대 ToString (CultureInfo.InvariantCulture)
- 8. Android + toString
- 9. ToString 메서드
- 10. 버전 1.1에서 2.0으로 ASP.NET 업그레이드 - 모든 Gotchas?
- 11. "Gotchas"in Facebook 응용 프로그램 개발
- 12. 자바 스크립트의 Number 타입의 Gotchas (C의 double)
- 13. ASP.NET MVC gotchas 및 학습 내용
- 14. 논리 색인이있는 gotchas 및 "in"이 R
- 15. toString()없이 객체 정보를 toString()으로 인쇄 하시겠습니까?
- 16. 웹 서비스 클래스의 ToString()
- 17. KeyValuePair에서 ToString()을 재정의하십시오.
- 18. .ToString() .rdlc 보고서의 형식
- 19. Java - toString to Color
- 20. 문자열 대 캐스팅 ToString
- 21. C# ChangeType 및 ToString?
- 22. Spinner : getContentDescription(). toString()
- 23. Javascript tostring issue
- 24. toString() Java의 제네릭 형식
- 25. JVMTI _jclass toString
- 26. 자바 스크립트를 toString 특질
- 27. toString() : 디버깅 또는 인간을위한?
- 28. ToString() 형식이 작동하지 않습니다.
- 29. C# toString() performance
- 30. 변환을위한 .ToString (...) 또는 Object.ToString() 변환
"호출 대상 개체 주위에 따옴표 넣기"? 그게 무슨 뜻인지 ...이게 잘못된 생각 인 것 같아. – Romain
나는 그가 당신에게 duka라는 물건이 있고 duka d = new duka()라고한다면 그가 의미한다고 생각한다. d.ToString()은 'duka'를 반환합니다 – taylonr
@taylonr : 그렇다면 분명히 반영해야합니다. –