Pergunta

Eu vi algum código onde um Class é importado, em vez de um espaço de nomes, fazendo com que todos os membros estáticos / métodos dessa classe disponível. É este um recurso do VB? Ou outras línguas fazer isso também?

TestClass.vb

public class TestClass
    public shared function Somefunc() as Boolean
        return true
    end function
end class

MainClass.vb

imports TestClass

public class MainClass
    public sub Main()
        Somefunc()
    end sub
end class

Esses arquivos estão no diretório App_Code. Só por curiosidade, porque eu nunca tinha pensado em fazer isso antes, nem tenho lido sobre isso em qualquer lugar.

Foi útil?

Solução

Uma das razões deste recurso está no lugar é emular 6.0 do Visual Basic Option GlobalMultiUse para Instancing. O Visual Basic 6.0 não tem a capacidade de fazer módulos público através de um limite DLL. Em vez de definir a propriedade Instancing para GlobalMultiUse. Ele é usado principalmente para classes utilitárias como uma classe que a exportação de uma série de funções matemáticas.

Cada vez que você chamar uma sub-rotina ou função em uma classe com o GlobalMultiUse Instancing, Visual Basic 6.0 instancia um classe nos bastidores antes de chamar a função.

Pode ser abusado para gerar globais funções / variáveis ??com todas as vantagens e desvantagens.

Outras dicas

Sim, é um Visual Basic recurso de linguagem. Enquanto você pode criar aliases, usando C # 's usando declaração , ele doesn' t parecer que você pode importar uma classe compartilhada no escopo. Para ser honesto, eu só nunca usei uma vez em um projeto legado que já tinha usado. Eu vejo algum valor, mas temo que pode causar mais mal do que bem para a futura manutenção do seu código.

Eu uso ele sempre que eu estou usando a mesma biblioteca muito tempo. Um bom exemplo é System.Math.

C # não suporta este, que eu acho ser muito chato.

Na verdade, essa função está disponível porque é uma compartilhada função . Se você fosse para remover o modificador compartilhada, você ainda teria que criar uma instância da classe para acessá-lo.

Para conseguir acesso a todas as variáveis ??e todas as funções dentro de uma classe por padrão, você gostaria de herdá-la.

Para meu conhecimento importação uma classe é basicamente amarrar referência direta para ele, não criando qualquer tipo de instância dele para você usar.

EDIT para maior clareza: Os links são existem links específicos VB, assim, explicando a funcionalidade desta pertencente a VB.NET

Espera, espera, espera ....

Eu encontrei esta manhã que poderíamos derivado todos os objetos (classe-S) dentro de qualquer classe que precisam de suas referências usando esse método / função;

Protected Overrides Sub Finalize()
    MyBase.Finalize()
End Sub
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top