Alterações de quebra do Visual Basic 2008
A tabela a seguir lista todas as alterações que podem impedir que um aplicativo que foi criado no Visual Studio 2005 Compilando no Visual Studio 2008, ou que podem mudar seu comportamento em time de execução.
Category (Categoria) |
Problema |
Descrição |
---|---|---|
Tipos anuláveis |
T alargamento como V?é uma conversão predefinida no Visual Studio 2008. |
No Visual Studio 2005, você pode criar uma conversão definida pelo usuário para permitir que T Para alargar a Nullable(Of T). sistema autônomo parte do maior suporte para tipos nullable no Visual Studio 2008, essa conversão é predefinida. Porque a resolução de sobrecarga considera conversões predefinidas e definidas pelo usuário, existe uma ambigüidade potencial se as existirem.Portanto, código que contém uma conversão de expansão definida pelo usuário para T T?é potencialmente ambíguo no Visual Studio 2008. Por exemplo, no código a seguir, a telefonar para c3.Sub1 funciona no Visual Studio 2005, mas causa um erro de compilador no Visual Studio 2008.
Para resolver esse problema, você pode remover a conversão definida pelo usuário ou você pode converter explicitamente para Class1 ou Class2:
|
Resolução de sobrecarga |
Diferenças entre classes genéricas e não genéricas foram corrigidas de resolução de sobrecarga. |
Um bug no Visual Studio 2005 pode causar comportamento de resolução de sobrecarga para classes genéricas sejam diferentes das classes não-genéricas.No exemplo a seguir, Class1 e Class2 são idênticos, exceto pelo fato de que Class2 tem um parâmetro genérico definidas nela. A telefonar para c1.Sub1 em Main é ambígua porque o argumento transmitido poderia BIND a qualquer sobrecarga de Sub1 em Class1. A ambigüidade causará um erro de compilador no Visual Studio 2005 e Visual Studio 2008. A telefonar para c2.Sub1 deve gerar o mesmo erro, mas no Visual Studio 2005 faz não. Em vez disso, o método vincula a sobrecarga sem restrição de Sub1 em Class2. Esse problema é corrigido no Visual Studio 2008.As duas chamadas geram erros do compilador devido a ambigüidade.Isso é ilustrado no código a seguir:
Para resolver esse problema, você pode alterar os métodos sobrecarregados para que eles não são mais ambíguos ou você pode especificar os argumentos de tipo explicitamente:
|
Resolução de sobrecarga |
Resolução com genérico e de sobrecargaParamArray parâmetros produz resultados diferentes no Visual Studio 2008. |
O meta de resolução de sobrecarga é tentar selecionar o método candidato cujos parâmetros mais se aproximam os tipos de argumentos que são passados para o método.No exemplo nesta seção, Sub1 sobrecarregado por uma hierarquia de herança e é chamado com argumentos de tipo Integer e Short. Resolução de sobrecarga de regras no Visual Studio 2005 e Visual Studio 2008 especificam que direcionam correspondências são correspondências melhor que aqueles que exigem ParamArray parâmetros. No entanto, usando regras de resolução de sobrecarga do Visual Studio 2005, inferência de tipos de tipos falha para o candidato sobrecarga na classe derivada, Class2, pois Y não pode ser um Integer e um Short, e as correspondências exatas são necessárias. Se argumentos sh e n foram do mesmo tipo, o Sub1 em Class2 seria preferencial sobre o candidato em Class1, que tem um ParamArray parâmetro. No entanto, como os dois argumentos têm tipos diferentes, a classe base sobrecarga em Class1 está selecionado em vez disso. T is inferred as Integer, and Short widens into the ParamArrayp. O Visual Studio 2008 usa um algoritmo de novo que seleciona sistema autônomo mesmos métodos sobrecarregados sistema autônomo o Visual Studio 2005, exceto neste caso específico.No Visual Studio 2008, o algoritmo determina que Integer é o tipo dominante neste exemplo, porque Short amplia a Integer. Tipo de parâmetro Y na classe derivada é inferida para ser Integer, e Short amplia a Integer. sistema autônomo resultado, a Sub1 na classe derivada é chamada.
Você pode forçar o comportamento do Visual Studio 2005, projetando uma variável c2 digitar C1ass1 antes de chamar Sub1, ou passando argumento sh sistema autônomo uma matriz.
|
Consulte também
Conceitos
Resolução de Sobrecarregamento
Tipos genéricos no Visual Basic
Referência
Date |
History |
Motivo |
---|---|---|
Julho de 2008 |
Tópico adicional. |
Aprimoramento de informações. |