Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

malainhocf

New, quando usar ?

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.