Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

malainhocf

New, quando usar ?

Recommended Posts

malainhocf

Olá, bom dia a todos,

Eu tenho uma classe chmada retangulo e ao criar uma instancia da classe devo usar:

Dim r1 as rectangulo

ou

Dim r1 as New rectangulo

Quando devo usar o New ?

Eu posso fazer assim

Dim i as New Integer ?

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Share this post


Link to post
Share on other sites
ribeiro55

Encara o New como uma inicialização (que no fundo é o que é).

Ao escreveres r1 As rectangulo estás a declarar uma variável vazia r1 do tipo rectangulo.

Quando escreves r1 As New rectangulo estás não só a declarar uma variável r1 do tipo rectangulo, como também a estás a inicializar.

Esta passa a representar não uma variável vazia do tipo rectangulo, mas uma referência a uma instância de rectangulo.

Repara:

[table]

[td]Dim r1 As rectangulo[/td][td]r1 = Nothing[/td]

[td]Dim r1 As New rectangulo[/td][td]r1 = instancia de rectangulo, pronta a referenciar[/td]

[td]Dim r1 As rectangulo = New rectangulo[/td][td]r1 = instancia de rectangulo, pronta a referenciar[/td]

[/table]

Isto em linhas direitas. Com certeza que alguns eruditos me vão querer bater :spank:

Investiga por a Internet e encontras explicações decentes.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
ribeiro55

Qual é a diferença entre teres um saco cheio de rebuçados e outro vazio?

Na prática, se a variável é uma referência a Nothing, não podes fazer nada com ela: é do mesmo tipo mas não se refere a nada (é o saco vazio, que ainda vazio não deixa de ser saco)

Se, por outro lado, é uma variável inicializada, podes utilizar os seus membros (métodos, propriedades,...): para além de ser do mesmo tipo, refere-se a qualquer coisa (é o saco cheio de rebuçados)


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
jpaulino

Mas deves ler e procurar primeiro e só depois perguntar (quando não entendes mesmo ou tens dúvidas) :thumbsup:

Share this post


Link to post
Share on other sites
softklin

Qual é a diferença entre teres um saco cheio de rebuçados e outro vazio?

Na prática, se a variável é uma referência a Nothing, não podes fazer nada com ela: é do mesmo tipo mas não se refere a nada (é o saco vazio, que ainda vazio não deixa de ser saco)

Se, por outro lado, é uma variável inicializada, podes utilizar os seus membros (métodos, propriedades,...): para além de ser do mesmo tipo, refere-se a qualquer coisa (é o saco cheio de rebuçados)

Excelente explicação ribeiro, muito bom exemplo mesmo! :thumbsup: Só acrescentando um pouco, o new chama uma função especial de objectos, chamada construtor. Esse construtor, tal como já foi dito, tem a função de inicializar as diversas propriedades do objecto.

Nesse caso o new int não faz sentido porque é um tipo primitivo, corrijam-se se estiver errado. O mais aproximado seria new Integer, porque Integer não é tipo primitivo, mas sim um objecto.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
jpaulino

A minha duvida pode ser a duvida de outras pessoas.

Ninguém duvida disso, mas a preguiça é um dos 7 pecados mortais. O fórum não é uma linha directa para formação ... é para esclarecimento de dúvidas (simples ou complexas), o que não invalida que se tente primeiro encontrar uma solução.

Isto não é só para ti, obviamente, mas existem tantas pergunta simples que podem ser esclarecidas com uma pequena pesquisa (mesmo internamente).

Share this post


Link to post
Share on other sites
ribeiro55

Nesse caso o new int não faz sentido porque é um tipo primitivo, corrijam-se se estiver errado. O mais aproximado seria new Integer, porque Integer não é tipo primitivo, mas sim um objecto.

Para o VB acho que Integer também é primitivo. Assim como String.

Já System.String é um objecto.

Ou serão a mesma coisa?

Quanto mais elevado é o nível da linguagem mais complicado é perceber as voltas que dão por trás.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
softklin

Pensei que String era um objecto tal como no Java. Mas creio que os tipos string e System.String são diferentes, tal como no caso do int e System.Integer. Indo ao object browser, eles têm o mesmo ícone (não sei bem o que representa), mas um é uma classe e o outro não.

Fica a dúvida.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
renafi

string é um atalho (Shorthand) de System.String. String é uma classe estática. A diferença é que com string, tens de criar uma variável e aceder aos métodos e funcionalidades de strings.

String, como é uma classe estática (não é necessário instanciar, nem criar variáveis), o que permite que faças operações pontuais sem ter de criar variáveis.


Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.