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

  • BASS212M

    BASS212M

    15 Temmuz 2009
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010
  • UniqueApps

    UniqueApps

    4 Ocak 2009