Array
(
)

Delphi e .NET

Garibaldi
   - 12 fev 2005

Olá pessoal, estou entrando cada vez mais de cabeça no .NET e assistindo a alguns programas da MS, fiquei com duvidas, e gostaria de discutir e trocar informações com vcs.
Por exemplo:
Num webcast q assisti, o cara disse que nem tudo em .NET é orientado a objetos, por exemplo, no delphi declaramos uma variável i: integer. Ela é um ´tipo de dado´, não um objeto, mas torna um objeto ao fazermos i.ToString (pois implementa um método). Sempre considerei no delphi q tudo é objeto, como fica??

Outra: variáveis contém APENAS Ponteiros para objetos, ou seja, a referência. Pois bem, isso faz sentido, pois explica como o Garbage Collector funciona (verificando se alguém aponta para determinado objeto). Mas se eu crio duas variáveis e passo a primeira para a segunda (a:= b) tenho na verdade dois ponteiros para um mesmo objeto, e alterando ´a´, altero ´b´ também. Isso está me deixando meio confuso, e talvez vocês tenham uma explicação melhor.


Beppe
   - 12 fev 2005

É impossível _implementar_ tudo como objetos, porque objetos são apenas ponteiros, pra ter alguma infomação é preciso ter outros tipos de dados, como Integer e Char.

Mas o .NET suporta boxing e unboxing, que é transformar algum valor em objeto e a sua operação contrária. Algumas operações são apenas ´syntactic sugar´, são convertidas para uma expressão semelhante. Ex: I.ToString() = IntToStr(I)

Sobre referências. A e B não são totalmente dependentes. Se ambas forem objetos e vc alterar o conteúdo de uma delas, verá a modificação em ambas, mas se vc atribuir um novo objeto a uma delas, a outra ainda acesará o objeto anterior. Experimente:

#Código

A := TForm1.Create(Application);
A.Show;
B := A;
B.Caption := ´A e B são o mesmo objeto´;

B := TForm1.Create(Application);
B.Show;
B.Caption := ´Objeto apontado por B´;

A.Caption := ´Objeto apontado por A´;