Кастинг UserControl как определенный тип пользовательского элемента управления

void - это не значение, которое нельзя использовать *((void*) x) = v;, и использование приведения для использования указателя на другой тип опасно , поскольку размер может не совпадать

Но в вашем случае вы установили 0, поэтому вы можете использовать memset или заменить malloc my calloc и бесполезно иметь clean_buffer:

int main(void)
{
   float  *pf;
   int    *pi;

   pf = calloc(10, sizeof(float));
   pi = calloc(10, sizeof(int));

   return 0;
}
7
задан MPelletier 10 December 2015 в 17:36
поделиться

3 ответа

foreach(UserControl uc in plhMediaBuys.Controls) {
    MyControl c = uc as MyControl;
    if (c != null) {
        c.PublicPropertyIWantAccessTo;
    }
}
9
ответ дан 6 December 2019 в 11:54
поделиться
foreach(UserControl uc in plhMediaBuys.Controls)
{
  if (uc is MySpecificType)
  {
    return (uc as MySpecificType).PulblicPropertyIWantAccessTo;
  }
}
5
ответ дан 6 December 2019 в 11:54
поделиться

Кастинг

Я предпочитаю использовать:

foreach(UserControl uc in plhMediaBuys.Controls)
{
    ParticularUCType myControl = uc as ParticularUCType;
    if (myControl != null)
    {
        // do stuff with myControl.PulblicPropertyIWantAccessTo;
    }
}

Главным образом, потому что использование является причинами ключевого слова два (квазидорогих) броска:

if( uc is ParticularUCType ) // one cast to test if it is the type
{
    ParticularUCType myControl = (ParticularUCType)uc; // second cast
    ParticularUCType myControl = uc as ParticularUCType; // same deal this way
    // do stuff with myControl.PulblicPropertyIWantAccessTo;
}

Ссылки

3
ответ дан 6 December 2019 в 11:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: