저는 얼마 동안 PHP 프로그래머입니다. 이틀 전, 나는 그들이 ASP.NET에서 할 결심을 줬던 취업 면접에 갔다 (C#). 나는 영향력의 PHP 영역에서 벗어나 나에게 도전할만한 적절한 언어를 배우고 싶다. 그래서 질문이 있습니다C# - Object Creation
런타임에 모든 인스턴스를 인스턴스화해야합니까? PHP에서, 나는 이런 식으로 할 수 있습니다 ...
class SomeObject {}
$objString = "SomeObject";
$objInstance = new $objString();
저는 C#에서 그렇게 할 수 없습니다. 아마도 컴파일 된 언어 일 것입니다. C#에서는 개체를 인스턴스화하는 팩터 리 패턴을 만들어야합니다. 또한 그 공장에서 10 개의 객체를 인스턴스화해야한다면 1if
진술이 추악 할 것입니다.
Activer 객체가있는 Activator::createInstance()
메서드가 있는데 제대로 작동하지 않습니다. 또한 Reflection이 있지만 두 가지 모두 (내가 알고있는 것처럼) 성능에 영향을 미칩니다.
그래서 동적으로 개체를 만드는 방법이 있습니까? 아니면 C#에서 내 프로그램에서 사용할 모든 개체를 즉시 만들 수 있습니까? 정말 유혹입니까?
편집
이 좋아, 그래서 내가 5 가지 occassions에 사용됩니다 5 개체가 있다고 가정 해 봅시다. 나는 프로그램을 실행하고, 프로그램은 그 객체 중 하나가 필요하다는 것을 평가하고 그것을 인스턴스화한다. 나머지 네 개는 결코 인스턴스화되지 않습니다. 나는 프로그램을 닫는다.
두 번째로 다른 매개 변수를 사용하여 프로그램을 실행하고 5 개의 개체 중 2 개가 만들어지고 다른 세 개는 결코 존재하지 않습니다.
이것은 PHP로 쉽습니다. 액티베이터와 다른 도구를 제쳐두어 보겠습니다. C#에서 5 가지 객체를 모두 만드는 것이 좋을지 모르지만 그 중 하나만 사용됩니다.
PHP를 모르지만 C#에서는 개체를 만들고 동시에 초기화 할 수 있습니다. 팩토리 또는 Activator 객체를 사용할 필요가 없습니다. 간단히 SomeObject someObj = new SomeObject();가됩니다. – Tim
.NET에서 이와 같이 동적으로 객체를 생성 할 수 있지만 구문뿐만 아니라 전체 언어, 런타임, 플랫폼을 배워야합니다. 내 말은 당신이 C#에서 PHP로했던 것처럼 프로그래밍을 유지하려고한다면, 당신은 매우 나쁜 경험을하게 될 것입니다. –
"런타임에 모든 인스턴스를 인스턴스화해야합니까?" 음, 아니, 제 말은, 컴파일 시간이나 커피 타임을 인스턴스화하지 않는다는 것입니다.하지만 그 중 하나를 인스턴스화하지 않아도됩니다. (그리고 당신이 원하지 않는다면 확실히 반성을 사용할 필요가 없습니다.) – atlaste