我有这样一个方法,以便:禁止“使用未分配的本地变量”错误?
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'增加了明显的等待时间,因此是不合理的。我们只能使用最简单,最快,最有效的算法来处理这类事情。 –