MIN_PORT = 1;
private const ushort MAX_PORT = UInt16.MaxValue;
public static int? GetAvailablePort(ushort lowerPort = MIN_PORT, ushort upperPort = MAX_PORT)
{
var ipProperties = IPGlobalProperties.GetIPGlobalProperties();
var usedPorts = Enumerable.Empty<int>()
.Concat(ipProperties.GetActiveTcpConnections().Select(c => c.LocalEndPoint.Port))
.Concat(ipProperties.GetActiveTcpListeners().Select(l => l.Port))
.Concat(ipProperties.GetActiveUdpListeners().Select(l => l.Port))
.ToHashSet();
for (int port = lowerPort; port <= upperPort; port++)
{
if (!usedPorts.Contains(port)) return port;
}
return null;
}
}
Как я могу в этом куске кода избавиться от функции ToHashSet() ?
Думаю, что HashSet здесь норм
Функция ToHashSet была введена только в .NET 4.7.2 и выше, я хочу чутка понизить требования к .NET
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1.-ctor?view=netframework-4.0#System_Collections_Generic_HashSet_1__ctor_System_Collections_Generic_IEnumerable__0__
Ты же знаешь что эта функция делает Догадайся как написать эту функцию самому
Нет, не знаю, код не я писал
Тогда разберись что это за зверь такой, ToHashSet
Я тебе уже ответил
Обсуждают сегодня