Delphi e .NET
12/02/2005
0
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.
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.
Garibaldi
Curtir tópico
+ 0
Responder
Posts
12/02/2005
Beppe
É 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:
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:
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´;
Responder
Clique aqui para fazer login e interagir na Comunidade :)