Si no mal recuerdo seria algo asi...
Person person = new Person();
Person.Address addres = new person.Address();
En realidad no estoy seguro ya que esas clases internes solo tienen valides dentro del misma misma clase y ahi puedes invocarlas como si fuese una clase normal.
Te recomiendo que leas sobre las clases internas y sus usos.
public class Person
{
public static class Address{
}
}
//----
Person.Address address = new Person.Address();
Hay un detalle sobre las clases internas y clases internas estáticas, las clases internas comparten las variables de la clase contenedora por eso creo yo deben ser instanciadas con un objeto (ver primer ejemplo), y las clases estaticas no, debido que ellas no comparten las variables de las clase contenedora.
Sinceramente siempre he hecho esto y me ha funcionado de maravilla:
public class Person
{
public class Address
{
}
public void metodo()
{
Adress adress = new Address();
}
}
Saludos!