Anonymní profil Kartmen – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Kartmen – Programujte.comAnonymní profil Kartmen – Programujte.com

 

Příspěvky odeslané z IP adresy 82.145.223.–

Kartmen
.NET › C# řazení pole struktur pře…
22. 12. 2018   #382632

Ahoj, mam dotaz jestli je možné hledat v poli struktur pomocí implementace interface jako je např. IEquatable jen přes datový typ proměnné, která je ve struktuře? Nebo je možné hledat přes stejnou strukturu? Snad to chci půjde lépe poznat z kódu. 

    public struct Money : IEquatable<Money>
    {
      public string Value { get; private set; }
      public int ID { get; private set; }

      public Money(string value,int ID) : this()
      {
        Value = value;
      }

      public bool Equals(Money other)
      {
        bool result = this.Value.Equals(other.Value);
        return result;
      }

      public bool Equals(string other)
      {
        bool result = this.Value.Equals(other);
        return result;
      }

      public override bool Equals(Object obj)
      {
        if (obj is Money)
          return Equals((Money)obj);
        else
          return false;
      }
    }

A použití 

        var amounts = new List<Money> { new Money("aaa", 10), new Money("bbb", 11), new Money("ccc", 22) };
        string xxx = "aaa";
        Money ttt = new Money();
        ttt.Value = "bbb";

        int index1 = amounts.IndexOf(ttt);
        int index2 = amounts.IndexOf(xxx);

První vyhledání (index1 ) přes strukturu funguje, ale druhé (index2) jen za pomocí parametru string ne...

Kartmen
C / C++ › C# konstruktory
22. 12. 2018   #382631

Já jen, že bez toho ": this()" je výsledek stejný a kompilátoru to také nevadí.

    public struct Money2 : IComparable<Money2>
    {
      public Money2(decimal value)  { Value = value; }
      public decimal Value { get; private set; }
      public int CompareTo(Money2 other) { return Value.CompareTo(other.Value); }
    }

Druhý dotaz je, že v tom tvém příkladě z třídy je bezparametrický konstruktor definován a tak proč ho nezavolat, proč se ale tady volá konstruktor, který definován není? Tedy píšeš, že ve struktuře se vlastnost musí inicializovat, ale to udělá i ten parametrický konstruktor. Nějak si nedokážu představit, co udělá ten prázdný konstruktor, nebo čím vlastnost inicializuje.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý