为什么不是"Console.WriteLine("asdf");" 执行?所有其他人都是.难道不是因为我们不能从最终范围跳出来吗?
static bool Func()
{
try
{
try
{
}
finally
{
try
{
throw new ApplicationException();
}
finally
{
Console.WriteLine("asd");
}
Console.WriteLine("asdf");
}
}
finally
{
Console.WriteLine("asd");
}
}
Run Code Online (Sandbox Code Playgroud) 运算符如何+用作重复分隔符?
fn dot(self, rhs: Self) -> S {
$(self.$s * rhs.$s)++
}
Run Code Online (Sandbox Code Playgroud)
$s将是x, y,z所以我想将宏扩展为self.x * rhs.x + self.y * rhs.y + self.z * rhs.z。如果我写$(self.$s * rhs.$s)-+,那么它可以工作并扩展到减法,但我需要加法,是否可以转义+标记?
标记代码无法访问的最佳方法是什么,因此编译器不会给出错误消息?一个简短的例子:
int x;
if (y == 0) x = 1;
else if (y == 1) x = 2;
Console.WriteLine(x);
Run Code Online (Sandbox Code Playgroud)
我知道y可以是0或1,但C#会给出一条消息,即x不会使所有路径成为值.真正的代码不是这个,但我想让它更短.
抛出异常是一种好习惯,还是有其他方法?
int x;
if (y == 0) x = 1;
else if (y == 1) x = 2;
else throw new Exception();
Console.WriteLine(x);
Run Code Online (Sandbox Code Playgroud)