Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Неявное преобразование типов


Автор: HackSign 8.1.2018, 14:15
Здравствуйте. Возникает ошибка при сборке, которая говорит о неявном преобразовании типов. 
привожу код теста, где возникает ошибка. 
 
Код

 [Test]
        public void ConvertToDouble()
        {
            double v = new Rational(1, 2);
            Assert.AreEqual(0.5, v, 1e-7);
        }

Ниже представлен класс
Код

public class Rational 
    { 
     
     private int numerator;
     private int denominator; 
     private double num; 
     private double dom; 
     
     public double Num 
     {
         get{return num;}
         set{num = value;}
     }
     public double Dom 
     {
         get{return dom;}
         set{dom = value;}
     }
     
     public int Numerator
      { 
         get{return numerator;} 
         set{numerator = value;}
         
      }
     public int Denominator 
     { 
         get{return denominator;}
         set{denominator = value;}
     }  
     
  
     public Rational(int numerator, int denominator)
     { 
         this.numerator = numerator; 
         this.denominator = (denominator > 0) ? denominator:1;
     }  
     //принимаем одно значение
     public Rational(int numerator) 
     {  
         this.numerator = numerator; 
     } 
         
     
         
      public bool IsNan 
      {
        
        get{
           
           if(denominator==0)    return true; 
           else return false;
           } 
       
      }  
      
      public static Rational operator +(Rational a, Rational b)
      { 
       Rational result = new Rational(1,1); 
       result.denominator = a.denominator*b.denominator; 
       result.numerator = result.denominator/a.numerator + result.denominator/b.numerator; 
       return result; 
      }
      public static Rational operator -(Rational a, Rational b) 
      { 
       Rational result = new Rational(1,1); 
       result.denominator = a.denominator*b.denominator; 
       result.numerator = result.denominator/a.numerator - result.denominator/b.numerator; 
       return result; 
      }
      public static Rational operator / (Rational a, Rational b) 
      { 
       Rational result = new Rational(1,1); 
       result.numerator = a.numerator * b.denominator; 
       result.denominator = a.denominator * b.numerator; 
       return result; 
      } 
      public static Rational operator * (Rational a, Rational b) 
      { 
       Rational result = new Rational(1,1); 
       result.numerator = a.numerator*b.numerator;
       result.denominator = a.denominator*b.denominator; 
       return result; 
      }
     
      
    }


Будьте так любезны подсказать, как сделать так, чтобы устранить ошибку? 

Автор: HackSign 9.1.2018, 20:39
Разобрался сам. 
Код

public static implicit operator double(Rational a) 
     { 
         return a.numerator%a.denominator;  
     }

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