У меня есть общая функция, которую я хочу знать, как писать.
List<Something> something; public int countItems<T>(List<T> Items) { // Here I would like to compare the type of "Items" with the type of "something" to see if they are compatible. How do I do it? return 0; }
Вы имеете в виду:
if(typeof(T) == typeof(Something)) {...}
?
Обратите внимание, что наличие дженериков сильно зависит от Т (и действуют по-другому), может означать, что то, что вы пытаетесь сделать, на самом деле не очень универсальный ...
Вопрос плохо сформулирован и более чем немного расплывчат, но это может сделать это:
using System.Linq; public int countItems<T>(List<T> Items) { return Items.OfType<Something>().Where(thing => thisOneCounts(thing)).Count(); }
if (something.GetType() == items.GetType()) ...
Здесь будут сравниваться типы реальных объектов.
Я думаю, что вы хотите использовать интерфейс IComparable .
Еще один инструмент, который вы можете использовать, это перегрузка операторов , чтобы вы могли определить, какпри каких обстоятельствах два объекта равны .