CADASTRE-SE

Curso de C#: Lição 12: Structs

Esta lição ensina C # Estruturas (Structs). Os nossos objectivos são os seguintes: Entenda o Objectivo de Estruturas. Implementar uma struct. Use uma struct.

Redação (@oficinadanet)
Esta lição ensina C # Estruturas (Structs). Os nossos objectivos são os seguintes:

* Entenda o Objectivo de Estruturas.
* Implementar uma struct.
* Use uma struct.


Uma struct lhe permite criar novos objetos de valor tipo que são semelhantes aos tipos built-in (int, float, bool, etc.) Quando você ia usar uma struct em vez de uma classe? Pense em como o alto-tipos são utilizados. Eles têm valores distintos e operações para manipular esses valores. Se você tem uma necessidade de se criar um objeto que comporta dessa maneira, considero-o como uma struct execução. Mais tarde neste artigo, vou explicar um jovem regras para a utilização de Estruturas, que lhe dará uma idéia melhor de quando a utilizá-los. Enquanto isso, aqui está um exemplo.

Listagem 12-1. Exemplo de uma struct:  StructExample.cs

using System;



struct Point

{

    public int x;

    public int y;



    public Point(int x, int y)

    {

        this.x = x;

        this.y = y;

    }



    public Point Add(Point pt)

    {

        Point newPt;



        newPt.x = x + pt.x;

        newPt.y = y + pt.y;



        return newPt;

    }

}



/// <summary>

/// Example of declaring and using a struct

/// </summary>

class StructExample

{

    static void Main(string[] args)

    {

        Point pt1 = new Point(1, 1);

        Point pt2 = new Point(2, 2);

        Point pt3;



        pt3 = pt1.Add(pt2);



        Console.WriteLine("pt3: {0}:{1}", pt3.x, pt3.y);

    }



A listagem 12-1 mostra como a declarar e usar uma struct. É fácil dizer que um tipo struct porque é uma das palavras-chave struct utilizados na sua definição. O esquema básico de uma struct é bem como uma classe, mas com diferenças, o que será explicado nos parágrafos seguintes. O Ponto struct tem um construtor que inicia os seus campos de x e y valores passados pol Ela também tem um método chamado Adicionar (), que irá aceitar um outro ponto struct, adicioná-lo ao presente struct, e retornar um novo struct.

Repare que há um ponto struct declaradas no Adicione () método. Ela não precisa de ser instanciado com um novo operador, como uma classe. Quando isso ocorre, é implicitamente a struct instanciado com o seu padrão (ou parameterless) construtor. O construtor inicializa parameterless struct todos os campos para os valores padrão. ie integrals are 0, floating points are 0.0, and booleans are false . ou seja, são integrais 0, são 0,0 pontos flutuantes, e booleans são falsas. É ilegal para definir um construtor parameterless para uma struct.

Embora não seja necessária, uma struct pode ser instanciado com um novo operador. Em Listing 12-1 o PT1 e pt2 Ponto str u cts são inicializado com valores usando o construtor definido no Ponto struct. Um terceiro ponto struct, pt3, é declarada e padrões de utilização do parameterless (padrão) construtor, porque não importa o que ele é valor a este ponto. Add() o método de PT1 struct é então invocado, passando a pt2 struct como um parâmetro.O resultado é atribuído a pt3, o que mostra que uma struct pode ser utilizado como qualquer outro tipo de valor.
Veja a saída de Listing 12-1:

pt3: 3:3 pt3: 3:3

Outra diferença entre as classes e Estruturas Estruturas é que não pode ter destructors. Além disso, Estruturas não pode herdar uma outra classe ou struct ou ser herdado a partir de. No entanto, uma struct maio implementar várias interfaces. Uma interface é uma referência de tipo C # com os membros que não têm implementações. Qualquer classe ou struct execução deve implementar uma interface que cada um dos métodos da interface. Interfaces são um assunto para mais tarde uma lição.

Resumo


Você já sabe como criar uma struct. Você também pode usar instanciar e Estruturas. Ao decidir se a implementar um tipo de uma struct, você deve considerar a forma como o modelo será utilizado.Além disso, consideram que uma struct incorre menos overhead do que uma classe, porque, sendo um tipo de valor, que é armazenado na pilha e não como uma classe é armazenada, sobre a heap.

Artigo automaticamente traduzido de: http://www.csharp-station.com/Tutorials/Lesson12.aspx

Leia a seguir: Curso de C#: Lição 11: Indexers


Relacionados:

Comente:

TOPO