C# 是否有其他方法编写此if代码?
我刚开始学c。我最喜欢if和if-else。现在我正在开发一个程序,它在其中写入一个IP地址,我需要键入正确的子网,以及所有这些。使用if和elseif编写代码需要很长的时间,所以我想知道是否有更快的方法C# 是否有其他方法编写此if代码?,c#,if-statement,C#,If Statement,我刚开始学c。我最喜欢if和if-else。现在我正在开发一个程序,它在其中写入一个IP地址,我需要键入正确的子网,以及所有这些。使用if和elseif编写代码需要很长的时间,所以我想知道是否有更快的方法 Random r = new Random(); int randomip = r.Next(256); int secondip = r.Next(256); int subnetip = r.Next(24, 31);
Random r = new Random();
int randomip = r.Next(256);
int secondip = r.Next(256);
int subnetip = r.Next(24, 31);
int numbers = subnetip;
Console.WriteLine("192.168." + randomip + "." + secondip + "/" + subnetip);
Console.Write("Type the correct netID: ");
Console.ReadLine();
Console.Write("Type the correct subnet: ");
Console.ReadLine();
if (numbers == 24)
{
Console.WriteLine("correct netID is: 192.168." + randomip +
"." + secondip / 256);
Console.WriteLine("correct subnet is: 255.255.255.0");
} else if (numbers == 25)
{
Console.WriteLine("correct netID is: 192.168." + randomip +
"." + secondip / 128);
Console.WriteLine("correct subnet is: 255.255.255.128");
} else if (numbers == 26)
等等……还有其他数字。难道没有一个更快更简单的方法让它工作吗?它是有效的,但是如果我想添加更多的数字,那就有问题了如果你向后想,这些是基于数字值的除数 换句话说,它们是一个递增数字的二次幂
31 => 2^1
30 => 2^2
29 => 2^3
28 => 2^4
27 => 2^5
26 => 2^6
25 => 2^7
24 => 2^8
换句话说,2是32减数的幂
换句话说,
var divisor = Math.Pow(2, 32-numbers);
var subnet = 256 - divisor;
最多4条线路,不带开关或if。耶
如果你向后想,这些是基于数字值的除数 换句话说,它们是一个递增数字的二次幂
31 => 2^1
30 => 2^2
29 => 2^3
28 => 2^4
27 => 2^5
26 => 2^6
25 => 2^7
24 => 2^8
换句话说,2是32减数的幂
换句话说,
var divisor = Math.Pow(2, 32-numbers);
var subnet = 256 - divisor;
最多4条线路,不带开关或if。耶
这里是什么样的模式让你一次256次,一次128次…你可以使用…这里是什么模式让你一次256次,一次128次…你可以使用。。。
Console.WriteLine("correct netID is: 192.168." + randomip + "." + secondip / divisor);
Console.WriteLine("correct subnet is: 255.255.255." + subnet);