Я согласен с комментариями о том, для чего предназначен набор - но это также тот случай, когда до версии 3.5 .NET не имел тип набора. Самым близким, что вы могли легко получить (используя только встроенные библиотеки и не записывая свой собственный набор), был словарь, значение которого не имеет значения.
Однако мне интересно, может быть, для 30 строк в .NET ранее, чем 3.5, List<string>
может не быть билетом. Мы знаем, что хэш-наборы действительно хорошо работают для больших наборов, но , если вы знаете, что используете небольшой набор строк, простой вызов List<string>.Contains
будет довольно быстрым. String.Equals
может проверять длину для начала, а затем проверять каждый символ, так что он, вероятно, очень быстро отклонит несоответствия.
Короче говоря, я бы, вероятно, использовал HashSet<string>
, если вы используете .NET 3.5, List<string>
, если вы используете .NET 2.0 или 3.0, и, возможно, ArrayList
, если вы используете .NET 1.1 , Это должно дать самый простой код вызова, и производительность, вероятно, будет хорошей. Если вы считаете, что это становится узким местом, докажите это с помощью профилировщика.