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

  • Propaganda Time

    Propaganda T

    19 EYLÜL 2010
  • stewmurray47

    stewmurray47

    1 Kasım 2006
  • xiaoyu85

    xiaoyu85

    20 ŞUBAT 2010