Como declaro uma variável para que cada classe (* .cs) possa acessar seu conteúdo, sem uma referência de instância?
101
Em C#
você não pode definir variáveis globais verdadeiras (no sentido de que elas não pertencem a nenhuma classe).
Dito isso, a abordagem mais simples que conheço para imitar esse recurso consiste em usar um static class
, da seguinte maneira:
public static class Globals
{
public const Int32 BUFFER_SIZE = 512; // Unmodifiable
public static String FILE_NAME = "Output.txt"; // Modifiable
public static readonly String CODE_PREFIX = "US-"; // Unmodifiable
}
Você pode então recuperar os valores definidos em qualquer lugar em seu código (desde que faça parte do mesmo namespace
):
String code = Globals.CODE_PREFIX + value.ToString();
Para lidar com diferentes namespaces, você pode:
Globals
classe sem incluí-la em um específico namespace
(de forma que seja colocada no namespace do aplicativo global);namespace
.
Não existe variável global em C #. Período.
Você pode ter membros estáticos se quiser:
fonte
static
exemplo que você forneceu não pode realmente ser considerado uma var global.Em primeiro lugar, examine se você realmente precisa de uma variável global, em vez de usá-la descaradamente, sem levar em consideração a arquitetura do software.
Vamos supor que ele passe no teste. Dependendo do uso, Globals pode ser difícil de depurar com condições de corrida e muitas outras "coisas ruins", é melhor abordá-los de um ângulo onde você esteja preparado para lidar com essas coisas ruins. Assim,
static
classe (para capacidade de gerenciamento).O esboço básico para tal classe seria:
Uso de outras classes (dentro do mesmo namespace)
fonte
Um recurso útil para isso é
using static
Como outros já disseram, você deve criar uma classe para seus globais:
Mas você pode importá-lo assim para não escrever mais o nome da classe na frente de suas propriedades estáticas:
fonte