Статическое свойство с нестатическим списком<T>
Статическое свойство возвращает список с сгенерированными данными моделирования.
В этом примере я создаю IP-адрес из строк для имитации IP-адресов с мобильного устройства.
Каковы риски утечек памяти?
static readonly string[] IPv6Simu = { "fe80::3a6d:eeeb:8bff:4ef2", "fc01:abab:cdcd:efe0:49d2:473:579c:cfaa" }; static readonly string[] IPv4Simu = { "172.22.1.100", "172.22.1.100" }; static readonly string[] InterfaceName = { "mnet1", "mnet0" }; public static List<IpData> StaticSimulateIPFactory { get { List<IpData> simu = new List<IpData>(); try { IPAddress ip; foreach (var IPv6 in IPv6Simu) { if (IPAddress.TryParse(IPv6, out ip)) { simu.Add(new IpData() { InterfaceName = InterfaceName.FirstOrDefault(), IPAddress = ip }); } } foreach (var IPv4 in IPv4Simu) { if (IPAddress.TryParse(IPv4, out ip)) { simu.Add(new IpData() { InterfaceName = InterfaceName.FirstOrDefault(), IPAddress = ip }); } } return simu; } catch (Exception) { simu.Add(new IpData() { InterfaceName = "INV", IPAddress = new IPAddress(new byte[]{127,0,0,1} )}); return simu; } } }
Что я уже пробовал:
Другой подход состоит в том, чтобы сделать все нестатичным. это не проблема, но я хочу использовать это значение моделирования в статическом методе.
lukeer
Я не вижу никакого риска утечки памяти в этом коде.
Но тот факт, что вы спрашиваете, заставляет меня поверить, что вы думаете о статический иметь в виду то, чего на самом деле нет.
То статический ключевое слово - это не управление памятью, а видимость (например, частный, общественный, прием).
Richard Deeming
Э-э, нет.
То static
ключевое слово не имеет ничего общего с видимостью. Это вполне возможно иметь public static
или private static
или internal static
.
То static
ключевое слово относится к тому, принадлежит ли член самому типу или к экземпляру этого типа.
lukeer
Ладно, не то слово. Может быть, доступность?
Вы не можете получить доступ к переменным экземпляра из статического метода (если только не создадите экземпляр и не используете его, но вы понимаете, что я имею в виду, не так ли?) но вы можете получить доступ к статическим переменным из методов экземпляра.
Tomas Takac
Сбросьте статику, сделайте все это экземпляром, а затем назовите его так: new IPFactory.Simulate()
. Вы должны опубликовать код, в котором это используется.