Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Приведение типов


Автор: Real 30.3.2008, 12:55
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication8
{
    class Massiv:IComparable   
    {
        int array;
        public Massiv(int _array)
        {
            array = _array;
        }
     

      
        int IComparable.CompareTo(object rightobj)
        {
            if(!(rightobj is Massiv))
                throw new ArgumentException("+++++");
            Massiv objMassiv=(Massiv)rightobj;
            return CompareTo(objMassiv);
        }
        public int CompareTo(Massiv rightobj)
        {
            return array.CompareTo(rightobj.array);
        }

        public static bool operator <(Massiv leftobj, Massiv rightobj)
        {
            return leftobj.CompareTo(rightobj) < 0;
        }
        public static bool operator <=(Massiv leftobj, Massiv rightobj)
        {
            return leftobj.CompareTo(rightobj) <= 0;
        }
        public static bool operator >(Massiv leftobj, Massiv rightobj)
        {
            return leftobj.CompareTo(rightobj) > 0;
        }
        public static bool operator >=(Massiv leftobj, Massiv rightobj)
        {
            return leftobj.CompareTo(rightobj) >= 0;
        }
              


        
    }
    class Program
    {
        static void Main(string[] args)
        {
            Massiv[] massiv = new Massiv[10];
            Random ramdom = new Random();
            for (int i = 0; i < 10; i++)
            {
                massiv[i] = (ConsoleApplication8.Massiv)ramdom.Next(100);
            }
            for (int i = 0; i < 10; i++)
            {
                Console.Write(massiv[i] + " ");
            }
           
            Console.WriteLine();
            


        }
    }
}


Код

 massiv[i] = (ConsoleApplication8.Massiv)ramdom.Next(100);


Код

Cannot convert type 'int' to 'ConsoleApplication8.Massiv'    

Почиму приведение типов не действует?

Автор: Optimus 30.3.2008, 13:34
Для того чтобы приведение типов работала, нужно написать оператор преобразования
Код

public static explicit operator Massiv(int value)
{
  return new Massiv(value);
}


И не забудьте переопределить ToString()
Код

public override string ToString()
{
  return array.ToString();
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)