Я пытаюсь написать матричный класс в C# и хочу охватывать только целые типы. Да, я знаю, есть, вероятно, множество других библиотек, которые уже предоставляют эту функциональность - я просто хотел попробовать попробовать применить математику, которую я изучаю в школе.Ограничение типа для класса C#
Во всяком случае, реальная проблема: у меня есть конструктор:
public class Matrix {
private int[,] __matrix;
Matrix(int rows, int columns) {
/* ... some logic here ... */
__matrix = new int[row , columns];
}
}
Я знаю, что вы можете ограничить до всего структур, но это также означает, что такие вещи, как DateTime
может оказаться в матрице. Любые предложения о том, как решить эту проблему, или кто-нибудь видел это в другом месте? Я подумывал написать общий класс, но я почти склоняюсь к атрибуту, объявляющему допустимые типы, а затем просто проверяя этот атрибут в коде на этом этапе, но я также совсем не упомянул о перспективах бокса/распаковки накладные расходы на использование object[]
для моей матрицы.
Вы можете создать общий класс. Затем сделайте простую проверку типа в своем конструкторе и выбросите 'IllegalArgumentException', если это не подходит. Я не уверен, что это хорошая практика, но я бы сделал это так. –
К сожалению, нет способа ограничить типы общих типов только примитивными числовыми типами в C# :( – MarcinJuraszek
Хорошо. Это то, что я собрал, также читал документацию MSDN, но надеялся, что, возможно, у кого-то был некоторый опыт работы с ним. для ответов. Кто-то хочет опубликовать ответ, который я могу отметить? – PSGuy