我有這樣一個方法,以便:禁止「使用未分配的本地變量」錯誤?
public static long? FromIpv4ToLong(this string ipAddress)
{
var octets = ipAddress.Split(IpSplitChar);
if (octets.Length != 4) return null;
var success = long.TryParse(octets[0], out long a)
&& long.TryParse(octets[1], out long b)
&& long.TryParse(octets[2], out long c)
&& long.TryParse(octets[3], out long d);
if (!success) return null;
return ((16777216L * a) + (65536L * b) + (256L * c) + d);
}
...現在,變量a
,b
,c
和d
絕不會由他們將要參考的點「未分配」,但沒有按編譯我不會這樣看的。有沒有一種方法可以強制編譯器「無論如何」構建它?提前初始化這些值似乎很愚蠢。
您應該考慮使用'IPAddress.TryParse',這將接受無效IP4地址。 – Lee
我爲在線廣告交換工作;我們每秒處理60-100K個IP地址,具有兩位數的毫秒延時SLA。 'IPAddress.TryParse'增加了明顯的等待時間,因此是不合理的。我們只能使用最簡單,最快,最有效的算法來處理這類事情。 –