Este artigo é transferido de: https://www.cnblogs.com/yubinfeng/p/4552717.html
A classe de Pessoa definida acima inclui membros: campos, atributos, métodos, eventos etc. Além disso, as classes aninhadas mencionadas acima também são membros da classe.
Os membros da classe são divididos em: membros estáticos (estáticos) e membros não estáticos
b. Membros estáticos são marcados com estático, se não marcado, o padrão é membros não estáticos
c) Membros estáticos pertencem à classe, membros dinâmicos pertencem à instância, ou seja, o objeto
O membro estático é compartilhado por todas as instâncias da classe.Não importa quantas instâncias ou cópias da classe, o membro estático ocupa apenas uma área do armazenamento. Membros não estáticos criam um domínio de memória em cada instância da classe.
A seguir, explicamos principalmente os principais membros da classe: campos, atributos, métodos
1. Membros do campo de classe
Declaração de campo: (estático / somente leitura) <Tipo> <nome da variável>
a) Pode ser entendida como uma variável privada da classe, que geralmente é privada.
b) A definição do campo geralmente começa com uma letra minúscula ou "_".
c) Existem dois tipos de modificadores de declaração de campo: estático (estático) e somente leitura (somente leitura).
O campo d é geralmente privado, portanto, modificadores de acesso geralmente não são necessários.
Exemplos:
1 estático int eyesCount = 2; 2 somente leitura int earsCount = 2;
2. Membros das propriedades da classe
a) Pode ser entendida como uma variável pública da classe, geralmente toda pública (pública)
b) O atributo tem dois métodos, get e set.
O acessador c.get retorna os mesmos dados que o tipo de declaração de atributo, o que significa que ele pode obter o valor ou a referência do campo interno quando chamado.
O acessador d.set não exibe os parâmetros configurados, possui um valor implícito de parâmetro, cuja função é atribuir valores a campos internos ou referências da propriedade quando é chamada.
Como os membros da classe são privados por padrão, como o atributo é público, no processo de desenvolvimento orientado a objetos, você deve usar o modificador public para declarar um atributo como público.
Os atributos podem ignorar os acessadores get ou set, mas não os dois.
Exemplos:
1 string _country; 2 // atributo de leitura e gravação 3 string pública País 4 { 5 set {_country = value;} 6 get {return _country;} 7} 8 // atributo somente leitura 9 string pública CountryOnleread 10 { 11 get {return _country ;} 12} 13 // escreve apenas o atributo 14 string pública Countryonlywrite 15 { 16 set {_country = value;} 17}
6. Membros dos métodos de classe (método)
Declaração: (modificador de acesso) <tipo> <nome do método> {corpo do método}
Chamada: [<nome da classe.>] | [<Nome do objeto da instância.>] <Nome do método> ([<lista de parâmetros real>])
Definição: é um membro da classe usada para executar cálculos ou outros comportamentos.
Métodos estáticos: os
métodos são divididos em métodos de instância e métodos estáticos (iguais aos membros da classe mencionados anteriormente)
Apenas campos estáticos podem ser chamados em métodos estáticos, campos não estáticos não são permitidos
Parâmetros do método:
Parâmetro de valor : sem nenhum modificador. O parâmetro formal no método é uma cópia do parâmetro real.A alteração do parâmetro formal não afetará o valor do parâmetro real na memória.O parâmetro atual é seguro.
Parâmetros de referência : declarados com o modificador ref.
A palavra-chave ref faz com que os parâmetros sejam passados por referência. O efeito é que, quando o controle é passado de volta ao método de chamada, quaisquer alterações feitas nos parâmetros do método serão refletidas na variável.
Para usar o parâmetro ref, a definição do método e o método de chamada devem usar explicitamente a palavra-chave ref.
Os parâmetros passados para o parâmetro ref devem ser inicializados primeiro. Isso é diferente de out, os parâmetros de out não precisam ser inicializados explicitamente antes de serem passados.
Os atributos não são variáveis, portanto, não podem ser passados como parâmetros ref.
Embora ref e out sejam tratados diferentemente no tempo de execução, eles são tratados da mesma forma no tempo de compilação. Portanto, se um método usa o parâmetro ref e o outro método usa o parâmetro out, você não pode sobrecarregar esses dois métodos. Por exemplo, de uma perspectiva de compilação, os dois métodos no código a seguir são idênticos. Se você tentar fazer isso, o código não será compilado.
Se um método usa parâmetros ref ou out e o outro método não usa esses dois tipos de parâmetros, ele pode ser sobrecarregado.
Exemplo de código:
// Chama números double [] = new double [] {1, 2, 3, 5.5}; double i = 0; MyAddOperation (números, ref i); Console.WriteLine ("2 vezes o resultado do cálculo é: {0} ", i * 2); Console.ReadLine (); // Referência parâmetro método declaração public static void MyAddOperation (números duplos [], ref resultado duplo) { resultado = 0; foreach (número numérico duplo) resultado + = número; Console.WriteLine ("O resultado do cálculo é: {0}", resultado); }
Parâmetros de saída : declarados com o modificador out. Semelhante à ref, também opera diretamente nos parâmetros reais. A palavra-chave out deve ser especificada explicitamente na declaração e na invocação do método. O método de declaração de parâmetro out não requer que variáveis sejam inicializadas antes de serem passadas para o método, porque seu significado é usado apenas para fins de saída. No entanto, antes que o método retorne, o parâmetro out deve ser atribuído.
A palavra-chave out faz com que os parâmetros sejam passados por referência. Isso é semelhante à palavra-chave ref.
As diferenças de ref:
ref requerem que as variáveis sejam inicializadas antes de serem passadas.
Embora as variáveis passadas como parâmetros de saída não precisem ser inicializadas antes de serem passadas, os métodos precisam ser chamados para atribuir valores antes que o método retorne.
Exemplos:
1 // Ligue para 2 números duplos [] = novo duplo [] {1, 2, 3, 5.5}; 3 duplos i = 0; 4 MyAddOperation (números, out i); 5 Console.WriteLine ("2 vezes o resultado do cálculo Sim: {0} ", i * 2); 6 Console.ReadLine (); 7 8 // Declaração do método do parâmetro de saída 9 public static void MyAddOperation (números duplos [], resultado duplo) 10 { 11 resultado = 0; 12 foreach (número duplo em números) 13 resultado + = número; 14 Console.WriteLine ("O resultado do cálculo é: {0}", resultado); 15}
Parâmetros de matriz : declarados com o modificador de parâmetros. A palavra-chave params é usada para declarar uma lista de parâmetros de comprimento variável. Somente um parâmetro params pode ser incluído na declaração do método. O parâmetro params é muito útil quando o número de parâmetros é variável, consulte o seguinte exemplo:
1 // Chame o método 2 double [] numbers = new double [] {1, 2, 3, 5.5}; 3 Console.WriteLine ("O resultado do cálculo é: {0}", MyAddOperation (numbers)); 4 5 // Declaração de parâmetro do tipo de matriz 6 public static double MyAddOperation (parâmetros duplos [] números) 7 { 8 resultado duplo = 0; 9 foreach (número numérico duplo) 10 resultado + = num; 11 resultado de retorno; 12}
Método virtual (método virtual)
A palavra-chave virtual é usada para modificar métodos na classe base. Existem duas situações para o uso do virtual:
Caso 1: O método virtual é definido na classe base, mas o método virtual não é substituído na classe derivada. Em seguida, na chamada para a instância da classe derivada, o método virtual usa o método definido pela classe base.
Caso 2: Um método virtual é definido na classe base e, em seguida, substitui-o na classe derivada usando override. Em seguida, na chamada para uma instância de uma classe derivada, o método virtual usa um método de substituição derivado.
Método abstrato (método abstrato)
A palavra-chave abstract pode ser usada apenas para modificar métodos em classes abstratas e não há implementação específica. A implementação de métodos abstratos deve ser implementada usando a palavra-chave override na classe derivada.
(Sobre a classe abstrata será explicada em detalhes mais adiante)
Pontos-chave:
1. Apenas campos estáticos podem ser chamados em métodos estáticos, campos não estáticos não são permitidos
2. Método sem valor de retorno, digite void