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

  • alex maybury

    alex maybury

    20 Aralık 2007
  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • TheSalband Rai

    TheSalband R

    11 NİSAN 2011