개체를 선언하지만 개체를 초기화하지 않는 클래스가 있습니다. 그런 다음 개체를 다른 클래스의 메서드에 전달하여 초기화합니다. 예상되는 것은 호출하는 클래스의 객체가 이제 초기화 된 객체에 대한 참조를 가지지 만 대신 null입니다. 난 아직도 널 (null)로 가리키는 InitializeObjectA()
를 호출 한 후 foo는 사용하려고하면다른 클래스의 메서드에서 초기화 된 개체는 C#의 메서드를 호출하여 참조되지 않습니다.
class MainClass
{
ObjectA foo;
OtherClass.InitializeObjectA(foo);
// why is foo null over here?
}
class OtherClass
{
public static void InitializeObjectA(ObjectA device)
{
device = new ObjectA();
}
}
내 문제가 장치 :
여기에 무슨 뜻인지의 예입니다! InitializeObjectA()
을 out ObjectA device
으로 변경하면 작동합니다. 아무도 이것이 왜 필요한지 설명 할 수 있습니까? 당신이
device = new ObjectA();
을 할 때 메모리에 다른 참조하여, 새에 개체를 설정하고 있기 때문이다
참조 또는 값으로 전달하는 MSDN : http://msdn.microsoft.com/en-us/library/s6938f28.aspx. – Vladimir
값을 통한 전달과 참조를 통한 전달을 잘 이해하면 실제로 도움이됩니다! http://msdn.microsoft.com/en-us/library/0f66670z.aspx –
foo가 아직 인스턴스화되지 않았기 때문에 패스에 대한 참조가 없으므로 메소드가 새 참조를 다시 전달할 방법이 없습니다. – Rake36