سؤال

أحاول فرز ArrayList من العناصر المخصصة والحصول على "كائن واحد على الأقل يجب أن ينفذ مثاليا." على الرغم من تنفيذ IComparable واجهة لهم. أنا فقط استدعاء الافتراضي Sort() لا معلمات أو أي شيء. تعريف الكائن الذي أحاول فرزه هو كما يلي:

class AssetItem : System.IComparable<AssetItem>
{
        public string AssetName { get; set; }
        public int AssetID { get; set; }

        public int CompareTo(AssetItem item)
        {
            if (null == item)
            {
                return 1;
            }
            else if (this.AssetID < item.AssetID)
            {
                return -1;
            }
            else if (this.AssetID == item.AssetID)
            {
                return this.AssetName.CompareTo(item.AssetName);
            }
            else
            {
                return 1;
            }
        }

هذا الرمز يبني على ما يرام. شيء آخر يجب مراعاته، وأشك في أن هذه قد تكون القضية رغم أنني لا أفهم كيف، فئة أعلاه هي الطبقة الداخلية. إذا كان هذا هو ما تعثرني، فماذا تدور حول مقارنة الطبقة الداخلية؟

هل كانت مفيدة؟

المحلول

لقد نفذت IComparable<T>, ، ليس IComparable. وبعد انهم واجهات مختلفة. إذا كنت ستستخدم الأجداد، فستصل فقط List<T> لتبدأ. انا اعنيك انت استطاع تنفيذ أيضا IComparable, ، ولكن فقط ابتعد عن المجموعات غير الرقمية قديمة إلى حد ما إذا كنت أنت.

نصائح أخرى

هل يمكنك استخدام Linq في مشروعك؟ إذا كان الأمر كذلك، وإذا كان كل ما تحتاجه هو الفرز حسب عقار، فلن تحتاج إلى التنفيذ المعاد. يمكنك فقط القيام:

theAssetsList.OrderBy(asset => asset.AssetId);

يمكنك أيضا تجربة .. قائمة = قائمة جديدة (قائمة. Listery (X => X.Text))؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top