Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

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

C# .NET .NET (C# a Visual Basic) Dvě na pohled stejná pole podle == stejná nejsou. American English version English version

Aktivity (1)
Avatar
Ondřej Krsička
Redaktor
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
Ondřej Krsička
Redaktor
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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 31.8.2016 20:39
Avatar
Ondřej Krsička
Redaktor
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.