Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    • MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples
    • Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Asp.net»C#»Variáveis ReadOnly – C#

    Variáveis ReadOnly – C#

    Jhonathan SoaresBy Jhonathan Soares24 de maio de 20141 Min Read C#
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    A variável readonly é um modificador que você pode usar em campos para definir valores de um tipo específico em sua programação ao utilizar C#. Quando uma declaração de campo inclui um modificador readonly, as atribuições para a variável podem ocorrer somente como parte da declaração inicial ou em um construtor na mesma classe.

    Resumindo, a variável readonly ou na tradução ( somente leitura ) não pode ser atribuída com valores fora de seu construtor de classe ou da sua declaração inicial. Vamos a um exemplo prático:

        class Idade
        {
            readonly int _ano;
            Idade(int ano)
            {
                _ano = ano;
            }
            void MudarAno()
            {
                //_ano = 1967; // Erro de compilação caso você descomentar.
            }
        }
        

    Neste exemplo, o valor do campo ano não pode ser alterado no método MudarAno, porque ele não está no construtor da classe.

    Você pode atribuir um valor para uma variável readonly apenas nos seguintes contextos:

    • Quando a variável é inicializada na declaração, por exemplo:

      public readonly int y = 5;
      
    • Para campos státicos:
      public static readonly uint timeStamp = (uint)DateTime.Now.Ticks;
      
    • Ou neste seguinte exemplo que traz os todos os casos :
       public class ReadOnlyTest
          {
             class SampleClass
             {
                public int x;
                // Inicializa o campo readonly
                public readonly int y = 25;
                public readonly int z;
      
                public SampleClass()
                {
                   // inicializa o campo readonly pelo construtor
                   z = 24;
                }
      
                public SampleClass(int p1, int p2, int p3)
                {
                   x = p1;
                   y = p2;
                   z = p3;
                }
             }
      
             static void Main()
             {
                //alimenta os campos com valores por uma nova instancia de classe passando
                //paramentros pelo construtor
                SampleClass p1 = new SampleClass(11, 21, 32);   // OK
                Console.WriteLine("p1: x={0}, y={1}, z={2}", p1.x, p1.y, p1.z);
                SampleClass p2 = new SampleClass();
                p2.x = 55;   // OK
                Console.WriteLine("p2: x={0}, y={1}, z={2}", p2.x, p2.y, p2.z);
             }
          }
          
      

    Viu como a linguagem C# é cheia de segredos interessantes que acabam sendo úteis em alguns casos?

    Artigo de referência: MSDN

    Um bom final de semana a todos!

    Não deixem de passar no nosso Faceboook.

     

     

    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    O que é a Ecma e qual é sua relação com C#?

    C# Post do Leitor 29 de julho de 20247 Mins Read

    UUID vs ULID: comparação e exemplos em C#

    C# 19 de junho de 20245 Mins Read

    Entendendo o ObjectId no MongoDB

    C# NoSql 25 de maio de 20246 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    Categorias
    • Arquitetura (14)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (1)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile