Na POO os objetos criados guardam somente endereços para o destino da memória que o realmente contém

Em C também dá pra fazer isso com ponteiros, e sem nada de POO. Isso não é exclusividade da orientação a objeto.

Sem contar que em C# os structs podem ficar no stack ou no heap depedendo do caso, e são tipos por valor. E ter "eventos" não é obrigatório. E mesmo os 4 pilares não são consenso, há muita discussão sobre o que realmente é POO: http://wiki.c2.com/?NobodyAgreesOnWhatOoIs

Enfim, hoje em dia as definições e limites são bem mais difíceis de determinar - o buraco é bem mais embaixo do que o texto dá a entender...

Se a struct estiver em um array ou outro objeto baseado em classe, ele fica na stack?


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

Ok, simplifiquei de propósito, sei que o local exato onde será alocado depende de vários fatores. Um `struct` pode ficar no heap dependendo do caso, editei pra ficar mais claro. Só fiz a simplificação pra contrapor a afirmação do texto de que objetos sempre ficam no heap. De qualquer forma, obrigado por complementar.