我有像这样的剃刀代码
bool some;
if (IsPost == false)
{
some = True
}
然后是html
<h1>@some.ToString()</h1>
当我运行它时,我得到了错误 使用未分配的局部变量'some'
任何人都可以解释原因吗?是不是首先执行razor代码然后执行html?
答案 0 :(得分:5)
为变量赋值。
bool some = false;
任何人都可以解释原因吗?不首先执行razor代码然后执行 HTML?
它与Razor或HTML执行优先级无关。请考虑以下简单的C#示例:
bool some;
Console.WriteLine(some);
您正在尝试编写尚未分配任何值的some
。类似于@some.ToString()
的情况,您没有为其赋值任何值,编译器无法确定它是否会在if
语句中获取值。
你也可以这样做:
bool some = default(bool); //same as false for bool
您还可以在some
部分指定else
,例如:
bool some;
bool IsPost = true;
if (IsPost == false)
{
some = true;
}
else
{
some = false;
}
现在编译器知道some
将被分配一些值,你的错误就会消失。
不太确定,但您似乎正在尝试切换您可以执行的IsPost
到some
的值:
some = !IsPost;
答案 1 :(得分:2)
您尚未为some
变量指定任何默认值。尝试将其指定为:
bool some = false;
这与Razor或HTML执行优先级无关