SORU
28 Mayıs 2015, PERŞEMBE


C't bir "içi" dizi olabilir#?

Bu bir yerde olduğunu hayal et

public static T AnyOne<T>(this T[] ra) where T:class
    {
    int k = ra.Length;
    int r = Random.Range(0,k);
    return ra[r];
    }

hatta sadece bu

public static string OneOf(this string[] strings)
    {
    return "a";
    }

Sonra, tabii ki bunu yapabilirsiniz...

string[] st = {"a","b","c"};
string letter = st.AnyOne();

... harika. AMA. Bunu yapmak mümkün DEĞİL gibi görünüyor:

string letter = {"a","b","c"}.AnyOne();

hatta bu belki de

string letter = ( {"a","b","c"} ).AnyOne();

ya ben denedim başka bir şey.

Aslında (1) Bu neden yapamaz? ve (2) Ben bir şey eksik, nasıl eğer bir yolu varsa bunu yapar mısınız?

CEVAP
28 Mayıs 2015, PERŞEMBE


Dizinin ilk oluşturmak için, new[] kullanarak.

string letter = (new[] {"a","b","c"}).AnyOne();

@Hvd bahsedilen dayalı parantez (..), olmadan bunu yapmak daha okunabilir olduğunu düşünüyorum çünkü dayalı parantez ekledim.

string letter = new[] {"a","b","c"}.AnyOne();

Ve diğer yanıtlar belirtildiği gibi veri türü new string[] belirtebilirsiniz.


Sadece dizi doldurmak için bir yol olarak düşünebilirsiniz, çünkü {"a","b","c"} yaratmak için değil yapamazsın.

Başka bir nedeni derleyici karışık olacaktır, oluşturmak için neler olacağını bilemeyiz, string[]{ .. } List<string>{ .. } bir örnek için.

new[] sadece derleyici kullanarak biliyorumveri türü(".."), ne istiyorsun {..}, (string) arasında. Önemli bölümü bir dizi istediğiniz anlamına gelir [].

Hatta new[] ile boş bir dizi oluşturabilirsiniz.

string[] array = new []{ }; // Error: No best type found for implicity-typed array

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Official Android Tips

    Official And

    23 EYLÜL 2009
  • OVERWERK

    OVERWERK

    6 Temmuz 2010
  • SVB International

    SVB Internat

    29 EKİM 2011