Erro do Compilador CS0116
Um namespace não pode conter diretamente membros, como campos ou métodos.
Um namespace pode conter outros namespaces, structs e classes. Para saber mais, confira o artigo Palavra-chave namespace.
Exemplo
O exemplo a seguir fará com que o Visual Studio sinalize partes do código como em violação a CS0116. A tentativa de compilação desse código resultará em falha na compilação:
// CS0116.cs
namespace x
{
// A namespace can be placed within another namespace.
using System;
// These variables trigger the CS0116 error as they are declared outside of a struct or class.
public int latitude;
public int longitude;
Coordinate coord;
// Auto-properties also fall under the definition of this rule.
public string LocationName { get; set; }
// This method as well: if it isn't in a class or a struct, it's violating CS0116.
public void DisplayLatitude()
{
Console.WriteLine($"Lat: {latitude}");
}
public struct Coordinate
{
}
public class CoordinatePrinter
{
public void DisplayLongitude()
{
Console.WriteLine($"Longitude: {longitude}");
}
public void DisplayLocation()
{
Console.WriteLine($"Location: {LocationName}");
}
}
}
Observe que, em C#, métodos e variáveis devem ser declarados e definidos dentro de uma classe ou struct. Para saber mais sobre a estrutura do programa em C#, consulte o artigo Estrutura geral de um programa em C#. Para corrigir esse erro, reescreva o código de modo que todos os métodos e campos estejam contidos dentro de um struct ou classe:
namespace x
{
// A namespace can be placed within another namespace.
using System;
// These variables are now placed within a struct, so CS0116 is no longer violated.
public struct Coordinate
{
public int Latitude;
public int Longitude;
}
// The methods and fields are now placed within a class, and the compiler is satisfied.
public class CoordinatePrinter
{
Coordinate coord;
public string LocationName { get; set; }
public void DisplayLatitude()
{
Console.WriteLine($"Lat: {coord.Latitude}");
}
public void DisplayLongitude()
{
Console.WriteLine($"Longitude: {coord.Longitude}");
}
public void DisplayLocation()
{
Console.WriteLine($"Location: {LocationName}");
}
}
}
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de