Рассмотрим следующий код:
private static void Main(string[] args)
{
    var ar = new double[]
    {
        100
    };
    FillTo(ref ar, 5);
    Console.WriteLine(string.Join(",", ar.Select(a => a.ToString()).ToArray()));
}
public static void FillTo(ref double[] dd, int N)
{
    if (dd.Length >= N)
        return;
    double[] Old = dd;
    double d = double.NaN;
    if (Old.Length > 0)
        d = Old[0];
    dd = new double[N];
    for (int i = 0; i < Old.Length; i++)
    {
        dd[N - Old.Length + i] = Old[i];
    }
    for (int i = 0; i < N - Old.Length; i++)
        dd[i] = d;
}
Результат в режиме отладки: 100 100 100 100 100. Но в режиме Release это: 100 100 100 100,0.
Что происходит?
Он был протестирован с использованием .NET framework 4.7.1 и .NET Core 2.0.0.