IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Dvě na pohled stejná pole podle == stejná nejsou.

Aktivity
Avatar
Ondřej Krsička:31.8.2016 20:19
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.8.2016 20:19
Avatar
Pjanus
Člen
Avatar
Odpovídá na Ondřej Krsička
Pjanus:31.8.2016 20:27

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.8.2016 20:27
Avatar
Odpovídá na Pjanus
Ondřej Krsička:31.8.2016 20:37

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

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

Ano pomocí LINQu je to vcelku snadné.

bool isEqual = Enumerable.SequenceEqual(arr1, arr2);
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
31.8.2016 20:39
Avatar
Odpovídá na Ondřej Krsička
Ondřej Krsička:31.8.2016 20:39

http://www.dotnetperls.com/sequenceequal
EDIT: Jsi rychlejší :D

Editováno 31.8.2016 20:40
 
Nahoru Odpovědět
31.8.2016 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.