CS0246 de erro do compilador
Mensagem de erro
O nome do namespace ou tipo 'tipo/namespace' não foi encontrado (precisa de um usando diretiva ou uma referência de assembly?)
Um tipo não foi encontrado.Você pode ter esquecido de referência (/Reference) o assembly que contém o tipo ou você pode não ter corretamente qualificado seu uso com o usando a diretiva.
Há várias razões para esse erro:
O nome do tipo ou namespace que você está tentando usar pode ser escrita incorretamente (incluindo o correto caso).Sem o nome correto, o compilador é não é possível localizar a definição para o tipo ou namespace que você ter chamado de no seu código.Isso ocorre com mais freqüência porque translation from VPE for Csharp faz distinção entre diferenciar diferenciar maiúsculas de minúsculas e o uso de diferenciar diferenciar maiúsculas de minúsculas correto não tenha sido usado ao fazer referência ao tipo.Por exemplo, Dataset ds; gerará CS0246; não é colocado em maiúscula aviso o s no DataSet.
Se o erro é para um nome de namespace, você pode não ter referenciado (/Reference) o assembly que contém o espaço para nome.Por exemplo, seu código pode conter using Accessibility;. No entanto, se seu projeto não referenciar o assembly acessibilidade.dll você obterá CS0246.See Caixa de diálogo Add Reference para obter informações sobre como adicionar uma referência no ambiente de desenvolvimento.
Se o erro é para um nome de tipo, você pode não ter o correto usando o diretiva, ou ter não totalmente qualificado o nome do tipo.Considere a seguinte linha de código: DataSet ds;.Para poder usar o tipo de DataSet, você precisaria fazer duas coisas.Primeiro, você precisa de uma referência ao assembly que contém a definição para o tipo de DataSet.Em segundo lugar, você precisa de um usando diretiva para o namespace onde DataSet está localizado.Por exemplo, porque DataSet está localizada no sistema.dados namespace, você precisaria a demonstrativo a seguir no início do código: using System.Data;.
A segunda etapa não é necessária.No entanto, se você tiver omitido esta etapa e, em seguida, ele exigiria que você qualifica totalmente o tipo de DataSet ao fazer referência a ele.Qualificando totalmente os ele significa que você usar o espaço para nome e o tipo de cada vez que você consultá-lo em seu código.Assim, se decidir ignorar a segunda etapa você precisaria alterar o código da declaração acima para: System.Data.DataSet ds;.
Se o erro é para um tipo não, você pode ter usado uma variável ou alguma outra coisa quando era esperado um tipo.Por exemplo, no é demonstrativo, se você usar um objeto de tipo em vez de um tipo real, você receberá esse erro.
Se você usar um usando a diretiva de alias e não sejam totalmente o nome do tipo, esse erro é gerado.Um usando diretiva alias não usa o Outros usando as diretivas no arquivo de código fonte para resolver tipos.Por exemplo, o código a seguir gera CS0246 porque o tipo de List<int> não é totalmente qualificado, até mesmo, embora um usando diretiva para System.Collections.Generic está presente:
using System.Collections.Generic; // Generates CS0246: using myAliasName = List<int>; // Does not generate an error: using myAliasName2 = System.Collections.Generic.List<int>
O exemplo a seguir gera CS0246:
// CS0246.cs
// using System.Diagnostics;
public class MyClass
{
[Conditional("A")] // CS0246, uncomment using directive to resolve
public void Test()
{
}
public static void Main()
{
}
}
Aqui está um exemplo onde um objeto do tipo Type foi usado onde um tipo real era esperado (caso a 4 acima):
// CS0246b.cs
using System;
class C
{
public bool supports(object o, Type t)
{
if (o is t) // CS0246 – t is not a type
{
return true;
}
return false;
}
public static void Main()
{
}
}
Date |
History |
Motivo |
---|---|---|
Julho de 2008 |
Adicionado possível causa do erro. |
Aprimoramento de informações. |