7

LINQを使用し.Find()ていますが、一致するものが見つかっても停止しません。私は持っています:

List<ipFound> ipList = new List<ipFound>();

ipFound ipTemp = ipList.Find(x => x.ipAddress == srcIP); 

if (ipTemp == null) {
   // this is always null
}

public class ipFound
{
    public System.Net.IPAddress ipAddress;
    public int bytesSent;
    public int bytesReceived;
    public int bytesTotal;
}

何か案は?私はここでおかしくなります。

ありがとう!

4

2 に答える 2

13

.Equalsの代わりに使用する必要があります==

var a = IPAddress.Parse("1.2.3.4");
var b = IPAddress.Parse("1.2.3.4");
Console.WriteLine(a == b);  // False
Console.WriteLine(a.Equals(b));  // True

上記のサンプルでa == bFalse、​​これらが2つの異なるオブジェクトであるためです。ただし、値a.Equals(b)True等しいためです。

于 2012-12-17T17:06:08.323 に答える
11

IPAddress.Equals参照を比較する代わりに使用する( ==):

ipFound ipTemp = ipList.Find(x => x.ipAddress.Equals(srcIP)); 

ちなみに、通常、クラス名はPascalCasedIPFoundvs. ipFound)です。

例: http: //ideone.com/lAeiMm

于 2012-12-17T17:06:15.000 に答える