Я не знаю, придумал ли кто-то из команды разработчиков C # этот термин, или он используется в других отраслях промышленности. Мы начали использовать его, работая над неявно типизированными локальными переменными (то есть «var x = what;») в C # 3.0. Довольно распространенный сценарий - хотеть, чтобы компилятор выводил часть типа, но явно указывал на другую часть. Например, рассмотрим следующее:
var list = new List<int>() { 10, 20, 30 };
Здесь тип «список» не указан, но задан аргумент типа общего списка. Можно предположить, что это может быть выведено из инициализатора:
var list = new List<???>() { 10, 20, 30 };
Здесь ??? означает «здесь есть аргумент типа; компилятор, выясни, какой он должен быть из контекста».
Мы называем это «бормотанием», потому что один шутливо представляет читаемый код как «var list равен новому списку hrmhmrhrm, инициализированному десятью, двадцатью, тридцатью».
Мы никогда не внедряли бормотание, что немного огорчительно, потому что это означает, что трудно составить список анонимного типа. Для этого вы можете использовать трюк " cast by example ".