Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Diferentes modos de criar um array

Não consegui entender se criar um array pelo meio abaixo:

Array amostra = Array.CreateInstance(typeof(double), 5);
amostra.SetValue(5.9, 0);
amostra.SetValue(1.8, 1);
amostra.SetValue(7.1, 2);
amostra.SetValue(10, 3);
amostra.SetValue(6.9, 4);

é diferente de criar por esse segundo meio:

double[] amostra2 = new double[5];
amostra2[0] = 5.9;
amostra2[1] = 1.8;
amostra2[2] = 7.1;
amostra2[3] = 10;
amostra2[4] = 6.9;

Existe alguma vantagem em usar o primeiro meio para criar um array? Ele me pareceu menos intuitivo e se não existe nenhuma vantagem em utilizar ele, vou focar apenas em utilizar o segundo modo.

1 resposta
solução!

Klayton,

Realmente eu só crio pelo segundo meio que você montou. Eu estava procurando na poderosa teia se existe alguma vantagem quando encontrei este link muito interessante onde o autor fez um "Benchmark". Tenho certeza que você vai gostar do resultado:

==========================================================

4 maneiras diferentes de criar um Array em C#

4DEVS.NET.BR

Steven Giesel - 13/04/2022

Neste artigo vou mostrar 4 maneiras diferentes para criar um array em C# e como essas maneiras se diferem uma das outras

contiguous memory locations

[MemoryDiagnoser] 
public class ArrayBenchmark 
{ 
    [Params(10, 100, 1_000, 10_000, 100_000, 1_000_000)] 
    public int ArraySize { get; set; } 

    [Benchmark(Baseline = true)] 
    public int[] NewArray() => new  int[ArraySize]; 

    [Benchmark] 
    public int[] ArrayPoolRent() => ArrayPool<int>.Shared.Rent(ArraySize); 

    [Benchmark] 
    public int[] GCZeroInitialized() => GC.AllocateArray<int>(ArraySize); 

    [Benchmark] 
    public int[] GCZeroUninitialized() => GC.AllocateUninitializedArray<int>(ArraySize); 
}

https://4devs.net.br/blog/4-diferentes-maneiras-criar-array/

==========================================================

O autor deixou o link para fazer download do projeto também.

[]'s,

Fabio I.