a - это строковое свойство для вашего анонимного типа
private void button4_Click(object sender, EventArgs e)
{
test((new { a = "asd" }).a);
}
private void test(string a)
{
}
Редактировать: Анонимные типы не являются производными от чего-либо, кроме объекта, поэтому вы не можете создать метод, который ожидает параметр анонимного типа.
Редактировать 2: когда вы создаете анонимный тип, компилятор создает совершенно новый тип, основанный на установленных вами свойствах и порядке их появления. Вы не можете создать анонимный тип и использовать его вместо любого другого типа (кроме объекта). Наиболее распространенный сценарий, в котором я их использовал, - для связывания, когда вам нужно сгладить граф объектов.
предупреждение, я ужасно придумываю хорошие примеры сценариев, и это все из памяти!
например, если бы у меня был список объектов Person, у которых было свойство name и свойство address, которое содержало адрес улицы и которое необходимо было привязать к списку
var people = new List<Person>()
listbox.TextMember = "Text";
listbox.ValueMember = "Value"
listbox.DataSource = from p in people
select new { Text = p.Name, Value = p.Address.StreetAddress };