SORU
23 HAZİRAN 2009, Salı


Nasıl C birden çok numaralandırma değerleri geçirir.?

Diğerleri okurken bazen' C# çoklu numaralama kabul edecek bir yöntem görüyorum kod tek bir parametre değerleri. Ben her zaman çok ilginç olduğunu düşündüm, ama hiç içine baktı.

Eh, şimdi bunun için bir ihtiyaç olabilir, ama nasıl yapacağımı bilmiyorum sanırım

  1. yöntem imzası bu kabul edecek şekilde ayarlayın
  2. yöntem değerleri ile çalışmak
  3. numaralama tanımlayın

bu tür bir şey elde etmek için. < / ^ hr . Benim özel durumda, Sistem kullanmak istiyorum.Olarak tanımlanan DayOfWeek,:

[Serializable]
[ComVisible(true)]
public enum DayOfWeek
{ 
    Sunday = 0,   
    Monday = 1,   
    Tuesday = 2,   
    Wednesday = 3,   
    Thursday = 4,   
    Friday = 5,    
    Saturday = 6
}

Benim yöntemi DayOfWeek değerleri bir veya daha fazla geçmek mümkün olmak istiyorum. Bu özel numaralama kullanabilir miyim? Nasıl 3 şey yukarıda listelenen yapabilirim?

CEVAP
23 HAZİRAN 2009, Salı


Sen numaralama, sadece [Bayraklar] özniteliği tanımlayın, iki güçler için değerleri ayarlayın ve bu şekilde çalışacaktır.

Değişen bir şey yok başka bir işlev için birden çok değer geçirilmesi dışında.

Örneğin:

[Flags]
enum DaysOfWeek
{
   Sunday = 1,
   Monday = 2,
   Tuesday = 4,
   Wednesday = 8,
   Thursday = 16,
   Friday = 32,
   Saturday = 64
}

public void RunOnDays(DaysOfWeek days)
{
   bool isTuesdaySet = (days & DaysOfWeek.Tuesday) == DaysOfWeek.Tuesday;

   if (isTuesdaySet)
      //...
   // Do your work here..
}

public void CallMethodWithTuesdayAndThursday()
{
    this.RunOnDays(DaysOfWeek.Tuesday | DaysOfWeek.Thursday);
}

Daha fazla bilgi için, MSDN's documentation on Enumeration Types bkz.

< / ^ hr .

Soru eklemeler yanıt olarak düzenleyin.

Dizi/koleksiyon/parametreler bir dizi olarak geçirmek gibi bir şey yapmak istersen tabii olarak bu numaralandırma kullanmak mümkün olmayacaktır. Bu, birden çok değer geçirmek izin verir. Bayraklar sözdizimi Numaralama bayraklar (veya tasarlanmış bir şekilde dile bastardize) olarak belirtilmesi gerekir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • monkophile

    monkophile

    25 Temmuz 2007
  • Smith Micro Graphics

    Smith Micro

    15 Mayıs 2008
  • Ty Moss

    Ty Moss

    20 Kasım 2007