2010-11-19 21 views
0
Ertesi fonksiyonunu uygulamak am

tarafından: pVal2 pVal1 üzerinde "% x" kattan fazla artmıştır eğer karşılaştırmakMiscUtils Operatör - çarpma sayısal alan

private bool CheckRelativeIncrease(T pVal1, T pVal2, out T pFluctuation, int x) 

. Fonksiyonu int, short ile çalışmak için Generics kullanıyorum ... MiscUtils.Operator kullanıyorum ama sorun bilinen ve bilinmeyen türleri karıştıramam. Aşağıdaki kod çalışmaz: 'faktörü' 'pVal2' ile aynı tip değil çünkü

  bool increased = false; 
    int comparer = Comparer.Default.Compare(pVal1, pVal2); 
    pFluctuation = Operator<T>.Zero; 
    if (comparer > 0) { 
    int factor = (int)(1 + (x/100)); 
    pFluctuation = Operator.Multiply(factor, pVal2); 
    comparer = Comparer.Default.Compare(pVal1, pFluctuation); 
    if (comparer >= 0) 
    increased = true; 
    } 
    return increased; 

"Operator.Multiply" bana bir hata verir.

Herhangi bir fikrin var mı? Ki biz inanmıyorum önceden

sayesinde Silvia

cevap

1

anda karışık türlerinde operatörleri desteklemektedir - ama Operator<T> kod bakarsanız bunu adapte etmek oldukça kolay olmalıdır. Bana bir yama göndermek için çekinmeyin.

Temel olarak, farklı girişler ve çıkışlar için farklı türler kullanmadığı için Operator<TValue, TResult> gibi görünen bir Operator<T1, T2, TResult>'a ihtiyacınız olacaktır. Beklenen sonuç türünün ne olduğunu belirtmeniz gerekir, tabi ki - int tarafından T çarpıyorsanız, sonucun int, T veya başka bir şey olmasını bekler miydiniz? C# 4 ve .NET 4 kullanıyorsanız

, sen this documentation göre

+0

Merhaba, hızlı cevap için teşekkürler. – Silvia

+0

Hızlı cevap için görüşmeler. Kodu uyarlamaya çalışacağım, tamam. Bu durumda beklenen sonuç T olur. Kaynak nereden indirebilirim? Ben sadece içinde Operatör yoktu MiscUtils eski bir sürümü buldum ... – Silvia

+0

@Silvia: En son sürümü her zaman http://pobox.com/~skeet/csharp/miscutil –

0

iki tip kullanabilirsiniz çarpın operasyon da vardır ... yerine dinamik yazarak kullanmayı düşünün isteyebilirsiniz:

public static TArg1 MultiplyAlternative(TArg1 value1, TArg2 value2) 
0

Başka türde bir türü yazmak için başka bir işlev yazın. Kodunuzda bu işleve iç içe arama yapın ve sorun çözüldü.