c#网络适配器列表

我有代码,它使用System.Net和System.Net.networkinformation引用,它生成一个我的网络连接名称列表.

一切似乎都很好并且正常工作,但是当我创建了一个这样的代码,并将导出的值导出到listBox1项添加时,我只有一个网络连接名称,但实际上我有四个.

我怎么解决这个问题?

private void button1_Click(object sender,EventArgs e)
{
    Adapters obj = new Adapters();
    var value = obj.net_adapters();
    listBox1.Items.Add(value);
}

public class Adapters
{
    public string net_adapters()
    {
        string value = string.Empty;
        foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
        {
            value = nic.Name;
        }
        return value;
    }
}

解决方法

我会修改你目前的代码
public string net_adapters() 
{ 
    string value = string.Empty; 
    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
        // bug in your original code right here is `=`
        // you proably meant to do something like value += "," + nic.Name
        // which would not work well with listBox Items collection
        value = nic.Name; 
    } 
    return value; 
}

这样:

public System.Collections.Generic.List<String> net_adapters() 
{ 
    List<String> values = new List<String>();
    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
        values.Add(nic.Name);
    } 
    return values; 
}

一种更奇特的方式(虽然它可能无关紧要,因为GetAllNetworkIntefaces可能阻塞,直到它有一个完整列表)将使用IEnumerable< T>和收益率:

public IEnumerable<String> net_adapters() 
{ 
    foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 
    { 
        yield return nic.Name;
    } 
    yield break;
}

不管怎样,你会像这样使用它:

var obj = new Adapters();    
var values = obj.net_adapters();
listBox1.ItemsSource = values;

(另外,我建议您使用.NET Framework Naming Guide)

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...