Tecnologia do Blogger.

Localizar

sábado, 18 de maio de 2013

Conhecendo Array em C#.Net



1.   INTRODUÇÃO

Durante o desenvolvimento de um sistema, nos deparamos em alguns momentos com a necessidade de armazenar na memória do computador cadeias de valores para o processamento dos dados.
Um exemplo dessa necessidade seria: O calculo de tributação de notas fiscais, onde precisamos freqüentemente acessar no banco de dados os valores de tributação para calculo de ICMS de determinado estado (UF Unidade Federativa). Para executar essa operação poderíamos armazenar o valor da tributação de todos os estados na memória do computador evitando acesso excessivo ao banco de dados diminuindo o trafego da rede. Claro que para fazer este armazenamento não precisamos criar uma variável para cada UF e sim somente criar uma array.


2.   O QUE É UM ARRAY

Uma array ou matriz nada mais é do que uma lista de elementos (valores) que são armazenados na memória do computador (uso run time). Por serem armazenados na memória do computador possuem um bom desempenho no seu uso.
Segundo o Wikipedia, uma matriz é uma tabela de m x n símbolos sobre um corpo F, representada sob a forma de um quadro com m linhas e n colunas e utilizado, entre outras coisas, para a resolução de sistemas de equações lineares e transformações lineares.

Para fazer o acesso de um elemento de um array usa-se uma notação bem similar ao da matemática, onde é escrito o nome da matriz seguido do índice numérico ao qual valor pertence.
Ex.: Nome da Array [Índice Númerico]
Obs.: vale lembrar que em C#.Net uma array é indexada sempre a partir de zero

3.   DECLARANDO UMA ARRAY

A declaração de uma array é feita de forma similar a de um objeto qualquer em C#.Net.
Ex.: Type[] NomeVariavel = new Type[N] {Elemento1 .. ElementoN}
Type é o tipo da array (Não se esqueça dos colchetes, isso que caracteriza o tipo como sendo uma array).
No exemplo observe que a array será instanciada no momento de sua declaração, não precisa ser feito dessa forma, mas a array deve ser instanciada antes de ser usada como toda variável, evitando erro de acesso a memória.
N é o tamanho da array. O índice de uma array começa em zero.
Exemplo:


Obs.: Uma variável é tipada quando seu valor possui uma característica bem definida. Ou seja, quando uma variável declarada como Integer somente irá receber valores numéricos inteiros e não poderá receber um Float que seriam valores numéricos reais.
A maior vantagem de uma variável tipada é a prevenção de erros de compilação, visto que esta variável não poderá receber valores inválidos.

4.   PRINCIPAIS PROPRIEDADES DE UMA ARRAY

Para acessar uma propriedade de uma array é preciso escrever o nome da array seguido do nome de sua propriedade. 

Length : Obtém o número de elementos em todas as dimensões da array.
IsFixedSize : Quando True indica que o array terá um nome fixo.
IsReadOnly : Quando True indica que a array não poderá ter seu valor modificado.
IsSynchronized : Quando True indica se o acesso ao array é sincronizado.
Rank : Obtém o número de dimensões de uma array.
SyncRoot : Obtém um objeto que pode ser usado para sincronizar o acesso à array.

5.   PRINCIPAIS MÉTODOS DE UMA ARRAY

Os métodos usados são de declaração estática em sua maioria “shared”, isso indica que sua utilização deve ser feita a partir da declaração da classe e não da instancia do objeto. A seguir segue-se os métodos e suas utilizações.

1.1.         Clear

Limpa o conteúdo de uma array atribuindo o valor null para todos os elementos informados no parametro.
Possui três parâmetros: 1) Array (Variável do tipo básico array que se pretende limpar); 2) Index (Valor do tipo inteiro que informa o índice inicial para se executar a limpeza) e 3) Length (Quantidade de elementos do array que serão zerados a partir do index)
Exemplo:


Observe que o array é criado contendo cinco elementos devidamente preenchidos. Na linha de baixo (linha 15) é executado o clear iniciando do elemento de índice dois como na instrução do segundo parâmetro e terminando no índice três limpando somente dois elementos como o solicitado no terceiro parâmetro.

1.2.         Clone

Cria uma cópia do array não mantendo a referência ao objeto copiado.
Exemplo:


Na linha 13 é instanciada a primeira array e na linha seguinte é feita a declaração da array que receberá a cópia daquela que foi instanciada. Observe que uma vez que o comando clone foi executado todos os valores são copiados para a segunda variável declarada.
Na linha 16 é executado um clear na array instanciada na linha 13 o que comprova a inexistência de uma referencia ao objeto.

Obs.:Objetos por referência são aqueles que apesar de possuírem declarações distintas, ou seja nomes de variáveis diferentes, indicam uma mesma posição de memória. Normalmente isso acontece quando se usa passar parâmetros por referência em métodos ou se atribui uma variável diretamente a outra.

1.3.         Copy

Executa a cópia dos elementos de uma array para outra. Neste método é feita a cópia somente dos elementos.
Exemplo:


Primeira observação a ser feita neste exemplo é: a array de destino dos valores deve ser instanciada e dimensionada antes de ser usada no método. 
Os quatro parâmetros são: 1) sourceArray (array onde estão os valores que se deseja copiar); 2) sourceIndex (índice inicial de onde serão retirados os valores); 3) destinationArray (array para onde os dados dos elementos serão copiados); 4) destinationIndex (índice inicial para onde os elementos serão copiados) e quinto Length (quantidade de elementos que serão copiados a partir do índice indicado no segundo parâmetro).
O parâmetro length não pode ser maior que a quantidade de elementos disponíveis na primeira e na segunda array menos o índice inicial.

1.4.         CopyTo

Copia todos os elementos de uma array unidimensional para outro array. Funciona de forma similar ao tópico anterior.

1.5.         CreateInstance

Função que retorna uma instancia de uma array com o tipo definido no parâmetro. Observe que esta função é uma maneira diferente de se instanciar uma array, outra maneira é usando new Type[Length] {} como o apresentado nos tópicos anteriores.

1.6.         Equals

Determina se duas instancias de objeto são iguais.
Para que o resultado seja true não basta que o valor dos índices sejam iguais e sim que a instancia seja a mesma.

1.7.         GetLength

Retorna o número de elementos de uma dimensão especificada no segundo parâmetro.

1.8.         GetLowerBound e GetUpperBound

Obtém o menor e maior índice de uma dimensão especificada. GetUpperBound equivale a função UBound do VB.Net.

1.9.         GetValue e SetValue

GetValue (Indice) obtém o valor alocado no índice especificado no parâmetro.
SetValue (Valor, Indice) envia um valor qualquer ao índice especificado.

1.10.      IndexOf

Retorna o índice da primeira ocorrência de um valor em uma array.

0 comentários: