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

  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • Ludique

    Ludique

    21 NİSAN 2009
  • SegaAmerica

    SegaAmerica

    5 Mart 2008