Avatar
Ondřej Krsička
Redaktor
Avatar
Ondřej Krsička:
using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] expected = { 2, 3, 5, 7, 11, 13, 17, 19 };
            int[] actual = PrimesTo(20);
            foreach (int i in actual)
                Console.WriteLine(i);
            Console.WriteLine($"{expected == actual}"); //Proč to vypisuje False?
            Console.ReadKey();
        }
        public static int[] PrimesTo(int max)
        {
            int[] nums = Enumerable.Range(2, max - 1).ToArray();
            for (int i = 2; i < max; i++)
                nums = nums.Where(n => n == i || n % i != 0).Select(n => n).ToArray();
            return nums;
        }
    }
}
 
Odpovědět 31. srpna 20:19
Avatar
Pjanus
Člen
Avatar
Odpovídá na Ondřej Krsička
Pjanus:

Protože dáváš li == na pole, neporovnáváš to co je v polích, ale odkazy na pole. Tudíž rovny budou pouze budou li ukazovat na jedno a to samé pole v paměti.

 
Nahoru Odpovědět 31. srpna 20:27
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Pjanus
Ondřej Krsička:

Aha, a je někde implementovaná metoda, která porovná hodnoty?

 
Nahoru Odpovědět 31. srpna 20:37
Avatar
Pjanus
Člen
Avatar
Odpovídá na Ondřej Krsička
Pjanus:

Ano pomocí LINQu je to vcelku snadné.

bool isEqual = Enumerable.SequenceEqual(arr1, arr2);
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 31. srpna 20:39
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.