ASP.net网页错误使用未分配的局部变量'some'

oni*_*nik 1 c# asp.net razor

我有像这样的剃刀代码

bool some;

if (IsPost == false)
{

 some = True

}
Run Code Online (Sandbox Code Playgroud)

然后是HTML

<h1>@some.ToString()</h1>
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到错误使用未分配的局部变量'some'

有谁能解释为什么?不首先执行razor代码然后执行html?

Hab*_*bib 5

为变量赋值.

bool some  = false;
Run Code Online (Sandbox Code Playgroud)

有谁能解释为什么?不首先执行razor代码然后执行html?

它与Razor或HTML执行优先级无关.考虑以下简单的C#示例:

bool some;
Console.WriteLine(some);
Run Code Online (Sandbox Code Playgroud)

您正在尝试编写some尚未分配任何值的内容.类似的情况是@some.ToString(),你没有为它赋值任何值,编译器无法确定它是否会在if语句中获取值.

你也可以这样做:

bool some = default(bool); //same as false for bool
Run Code Online (Sandbox Code Playgroud)

您还可以分配some一个值,else如:

bool some;
bool IsPost = true;
if (IsPost == false)
{
    some = true;
}
else
{
    some = false;
}
Run Code Online (Sandbox Code Playgroud)

现在编译器知道some将分配一些值,你的错误就会消失.

真的不知道,但似乎你想切换的价值IsPostsome,你可以这样做:

some = !IsPost;
Run Code Online (Sandbox Code Playgroud)