“Портится” класс в теге кнопки WPF

189
31 января 2019, 07:20

Пытаюсь передать методу класс, который лежит в теге кнопки, при создании собственно в самом вызове все хорошо.

    public void DrowField()
    {
      var button = new Button()
        {
          Tag = new Tag {height=0,width=0 }
        }
    }
    void Panel_Click(object sender, RoutedEventArgs e)
    {
        var tag = (sender as Button).Tag;
        var tag1 = new Tag {height = 0, width = 0 };
        proc.Addmass(tag); //ошибка, хотя все свойства на месте
        proc.Addmass(tag1); //все OK
    }
    public void Addmass(Tag obj)
    { }
    public class Tag
    {public byte height, width;}

Сама ошибка: Ошибка 1 Аргумент "1": преобразование типа из "object" в "tofu.Tag"

Answer 1

Тип свойства Button.Tag - object. Это Вы знаете, что там на самом деле тип Tag, а компилятору это неизвестно. Ваш код

var tag = (sender as Button).Tag;
proc.Addmass(tag);

пытается вызвать proc.Addmass с параметром, тип которого object.

Tag tag = (Tag)(sender as Button).Tag;
proc.Addmass(tag);

Это тоже сработает:

var tag = (Tag)(sender as Button).Tag;
proc.Addmass(tag);

что это за уточнение

Это "уточнение" называется "преобразование типа" ("type-cast").

READ ALSO
Поле структуры с битовыми полями

Поле структуры с битовыми полями

В ffmpeg модуле, а именно в avformat, есть структура под названием AVIndexEntry, и описана она как:

176
Изменить переменную в бесконечном цикле

Изменить переменную в бесконечном цикле

Нужно чтобы переменная proverkaTimera менялась в необходимом интервале времени с false на true и бесконечный цикл заходил бы в тело условия if (proverkaTimera)

194
Почему не подключается xdebug.remote_enable?

Почему не подключается xdebug.remote_enable?

подключаю xdebug в использую php 72

253
Доступ к данным из другого потока

Доступ к данным из другого потока

Решил вспомнить PHP и написать простую программу, но столкнулся с проблемой доступа к данным из другого потока, не понимаю что не так, вроде...

162