SORU
28 AĞUSTOS 2008, PERŞEMBE


'C yanlış operatör s# burada ne için iyi?

C iki garip operatörleri vardır#:

Eğer bunu doğru anladıysam bu operatörler boolean bir ifade yerine kullanmak istiyorum ve bool örtülü bir dönüşüm sağlamak istemiyorum nerede tiplerinde kullanılabilir.

Hadi aşağıdaki bir Dersim var ki:

    public class MyType
    {
        public readonly int Value;

        public MyType(int value)
        {
            Value = value;
        }

        public static bool operator true (MyType mt)
        {
            return  mt.Value > 0;
        }

        public static bool operator false (MyType mt)
        {
            return  mt.Value < 0;
        }

    }

Aşağıdaki kodu yazabilirsiniz:

    MyType mTrue = new MyType(100);
    MyType mFalse = new MyType(-100);
    MyType mDontKnow = new MyType(0);

    if (mTrue)
    {
         // Do something.
    }

    while (mFalse)
    {
        // Do something else.
    }

    do
    {
        // Another code comes here.
    } while (mDontKnow)

Ancak herkes için tek gerçek operatör yukarıdaki örnekler yürütülür. C yanlış operatör ne kadar# iyi?

Not: Daha fazla örnek here, here here bulunabilir.

CEVAP
28 AĞUSTOS 2008, PERŞEMBE


&& || operatörler geçersiz kılmak için kullanabilirsiniz.

&& || operatörler olamaz kılınmış, ama geçersiz kılın |, &, true ve false tam olarak doğru derleyici Ara | & yazdığında || &&.

Örneğin, bu kod (bu numara hakkında; archived version @tarafından BiggsTRC buldum http://ayende.com/blog/1574/nhibernate-criteria-api-operator-overloading -) bak:

public static AbstractCriterion operator &(AbstractCriterion lhs, AbstractCriterion rhs)
{
       return new AndExpression(lhs, rhs);
}

public static AbstractCriterion operator |(AbstractCriterion lhs, AbstractCriterion rhs)
{
       return new OrExpression(lhs, rhs);
}

public static bool operator false(AbstractCriterion criteria)
{
       return false;
}
public static bool operator true(AbstractCriterion criteria)
{
       return false;
}

Bu tabii ki bir yan etkisi kullanılmak amacıyla böyle değil, ama yararlı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • ŠĩŗĜŕôŵåɭȍҭҭ

    ŠĩŗĜŕô

    29 Kasım 2009
  • Tips On Linux

    Tips On Linu

    26 Temmuz 2008