Я следующий простого (тривиальный) методом в C#
, который должен возвращать MAC Address выбранного network interface card (NIC)
:метод, возвращающие пустой байт [] вместо MAC-адрес
public byte[] GetMacAddress(int adapterIndex)
{
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
if ((adapterIndex >= networkInterfaces.Length) || (adapterIndex < 0))
{
return new byte[6] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
}
else
{
return networkInterfaces[adapterIndex].GetPhysicalAddress().GetAddressBytes();
} // if
} // GetMacAddress
Теперь метод вызывается из Program.cs
(это main
метода):
using System;
using Comms.NwStack.IpLayer.IpGateway.Ndis;
namespace NDISTester
{
class Program
{
static void Main(string[] args)
{
TCP_AdapterList networkAdapters = new TCP_AdapterList();
Console.WriteLine(networkAdapters.GetName(0) +
" " +
networkAdapters.GetMacAddress(0).ToString());
Console.ReadKey();
} // Main
} // class
} // namespace
и вот результат:
Local Area Connection System.Byte[]
Почему я становлюсь пустым MAC Address
?
Каждый класс NET является производным от базового класса _object_, который определяет метод ToString. Но метод ToString объекта базового класса не может быть точным для каждого класса. Поэтому, если класс нуждается в точной реализации ToString, он должен переопределить ToString с конкретной реализацией. Если класс не переопределяет ToString(), то базовая ToString просто вернет имя класса. Массив _byte [] _ не имеет переопределения для ToString. – Steve