SORU
9 ŞUBAT 2014, Pazar


Transfer kurucu NULL

Yapıcı parametre Double[] ile yürütülür neden anlayamıyor?

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

namespace MyConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            D myD = new D(null);
            Console.ReadLine();           
        }

    }

    public class D
    {
        public D(object o)
        {
            Console.WriteLine("Object");
        }
        public D(double[] array)
        {
            Console.WriteLine("Array");
        }
        public D(int i)
        {
            Console.WriteLine("Int");
        }
    }
}

İlk kurucu referans türünde bir parametre alır çünkü bence. null çünkü bir referans parametresi ile ilk kurucu başvuru türleri için varsayılan değerdir.

Ama object, aynı zamanda bir başvuru türü bir şey anlamıyorum.

CEVAP
9 ŞUBAT 2014, Pazar


Ama hiçbir nesne neden anlayamıyor? Ayrıca, bir başvuru türü mü?

Evet, double[] object null ikisi de örtük olarak dönüştürülebilir yani referans türleridir. Ancak, üye aşırı yükleme genellikle daha özel bir tür iyilik, double[] yapıcı kullanılır. Daha fazla ayrıntı için C bölüm 7.5.3# belirtimi (ve çocuk orada bir sürü detay var).

Bölüm 7.5.3.5: özellikle

İki farklı T1 ve T2, T1 verilir aşağıdaki tutar en az biri varsa: T2 daha iyi bir dönüşüm hedef

  • T2 T1 örtülü bir dönüşüm var, ve T1 T2 hiçbir örtülü dönüşüm var

T1 double[] T2 object bulunduğu durum burada. Bir örtük dönüştürme double[] object ama hiç bir örtük dönüştürme object double[] double[] daha iyi bir dönüşüm hedef daha object.

Eğer object kurucu güç kullanmak istiyorsanız, sadece koyun

D myD = new D((object) null);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Eric Magidson

    Eric Magidso

    4 Ocak 2009
  • Kontor.TV

    Kontor.TV

    14 Mart 2006
  • SomeOne Pro

    SomeOne Pro

    25 EKİM 2013