请使用类解释.NET的工作原理

时间:2011-02-18 14:06:06

标签: .net vb.net class

我运行以下代码段。

Public Shared Sub DisplayDnsConfiguration() 
Dim adapters As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
Dim adapter As NetworkInterface
For Each adapter In  adapters
    Dim properties As IPInterfaceProperties = adapter.GetIPProperties()
    Console.WriteLine(adapter.Description)
    Console.WriteLine("  DNS suffix................................. :{0}", properties.DnsSuffix)
    Console.WriteLine("  DNS enabled ............................. : {0}", properties.IsDnsEnabled)
    Console.WriteLine("  Dynamically configured DNS .............. : {0}", properties.IsDynamicDnsEnabled)
Next adapter

End Sub 'DisplayDnsConfiguration

我理解最终结果,打印了一些属性。但是我不明白那里的方式。

以下三行是我不理解的:

1. Dim adapters As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces()
2. Dim adapter As NetworkInterface
3. For Each adapter In  adapters

关于第1行,为什么是As NetworkInterface(),我理解它是字符串或整数等...但不是NetworkInterface()。然后我假设它使用GetAllNetworkInterfaces()方法返回的数据填充“适配器”。

关于2.与上面相同,但为什么最后不使用()?

关于3.为什么在适配器中使用适配器?它实际上做了什么?我理解它循环通过接口,但是如何?

由于

3 个答案:

答案 0 :(得分:2)

1 - 它将“适配器”声明为“NetworkInterface”类型的数组

在vb.net中,数组是用(...)语法声明和索引的,在c#中它是[...],所以字符串数组将是

dim stringArray as string()

c#中的内容看起来像

string[] stringArray;

2 - 这将是每个循环的范围变量,用于引用数组中的对象,因此它本身不是数组

3 - foreach正在说“循环通过适配器数组,对于找到的每个对象,为数组中的当前变量适配器分配当前值,然后运行这段代码,重复直到我们到达数组的末尾”< / p>

答案 1 :(得分:2)

Dim yourIndividualName as SomeType

声明一个名为yourIndividualName的变量,其类型为SomeType。与int相比,StringNetworkInterface是相当原始的类型,但声明它们是相同的。

例如:

Dim someText as String

要声明数组(列表),只需将()添加到类型

即可
Dim severalTexts as String()

回到你的问题:

1:

Dim adapters As NetworkInterface()

声明名为NetworkInterface的{​​{1}}列表(实际上是一个数组),但列表为空。然后adapters填写该列表。

2:

= NetworkInterface.GetAllNetworkInterfaces()

这声明了一个Dim adapter As NetworkInterface 类型的空变量。它后来用于浏览列表。

3:

NetworkInterface

这将获取列表For Each adapter In adapters ' do some stuff Next adapter 中的第一个元素,将其保存在adapters中,并在adapterFor之间执行操作。当列表中有另一个项目时,Next会使用下一个项目,将其保存在For中,依此类推,直到它到达列表adapter的末尾。在adaptersFor之间,您可以Next使用adapter显示它的一些属性等。

执行相同操作的较短版本:

For Each adapter as NetworkInterface In NetworkInterface.GetAllNetworkInterfaces()
    Dim properties As IPInterfaceProperties = adapter.GetIPProperties()
    Console.WriteLine(adapter.Description)
    Console.WriteLine("  DNS suffix................................. :{0}", properties.DnsSuffix)
    Console.WriteLine("  DNS enabled ............................. : {0}", properties.IsDnsEnabled)
    Console.WriteLine("  Dynamically configured DNS .............. : {0}", properties.IsDynamicDnsEnabled)
Next adapter

答案 2 :(得分:0)

首先,大多数情况下,你会在这一行中看到第2步和第3步

For each adapter as NetworkInterface in adapters

Next

回答您的疑虑:步骤1是网络接口的集合,而数字2是对象NetworkInterface的局部变量。步骤3使您循环遍历步骤1中集合中存在的所有NetworkInterface。