できることの 1 つはこれです... foreach ループでは、コレクションに一致するインスタンスが必要です。つまり、たとえば、次のような文字列のリストがあるとします。
List<string> lMyList
プログラマーは、int または double のインスタンスを使用してこのリストを反復処理することはできません...
foreach (int lIterator in lMyList)
{ // code
}
これは単に機能せず、「int」が「string」のタイプではないという構文エラーをスローします。
それを解決するには、次のようにリストを反復処理する必要があります
foreach (string lIterator in lMyList)
{ // code
}
さて、あなたの質問に。IPAddress は、独自のクラスとタイプです。単純に文字列型にすることはできません。ただし、これを回避する方法があります。文字列を明示的に IP アドレスに変換します。ただし、最初にリストを反復処理する必要があります。
foreach (string lLine in File.ReadAllLines("proxy.txt"))
{
// Code In Here
}
これにより、テキスト ファイル内のすべての行が繰り返されます。これはテキスト ファイルなので、文字列のリストを返します。文字列のリストを反復処理するには、プログラマはそれを反復処理するための文字列ローカル変数が必要です。
次に、現在の文字列をローカル IP アドレス インスタンスに解析する必要があります。これを行うにはいくつかの方法があります。1) 文字列を単純に解析 (System.Net.IPAddress.Parse()) するか、文字列を IPAddress に TryParse (IPAddress.TryParse()) することができます。
Method One:
// This will parse the current string instance to an IP Address instance
IPAddress lIPAddress = IPAddress(lLine);
Method Two:
IPAddress lIPAddress; // Local instance to be referenced
// At runtime, this will "Try to Parse" the string instance to an IP Address.
// This member method returns a bool, which means true or false, to say,
// "Hey, this can be parsed!". Your referenced local IP Address instance would
// have the value of the line that was parsed.
if (IPAddress.TryParse(lLine, out lIPAddress))
{
// Code
}
さて、これで邪魔になりません。これで終わりにしましょう。
// Iterates over the text file.
foreach (string lLine in File.ReadAllLines("proxy.txt"))
{
// Create a local instance of the IPAddress class.
IPAddress lIPAddress;
// Try to Parse the current string to the IPAddress instance.
if (IPAddress.TryParse(lLine, out lIPAddress))
{
// This means that the current line was parsed.
// Test to see if the Address Family is "InterNetwork"
if (string.Equals("InterNetwork", lIPAddress.AddressFamily.ToString()))
{
TextBox1.Text = lIPAddress.ToString();
}
}
}
これが役立つことを願っています!