1

我有这样的剃须刀代码

bool some;

if (IsPost == false)
{

 some = True

}

然后是 html

<h1>@some.ToString()</h1>

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

谁能解释为什么?剃须刀代码不是先执行然后html吗?

4

2 回答 2

5

为您的变量分配一些值。

bool some  = false;

谁能解释为什么?剃须刀代码不是先执行然后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它将被分配一些值并且您的错误会消失。

不太确定,但您似乎正在尝试切换to的值,IsPostsome可以执行以下操作:

some = !IsPost;
于 2013-09-19T19:19:03.480 回答
2

您尚未为some变量分配任何默认值。尝试像这样分配它:

bool some = false;

这与 Razor 或 HTML 执行优先级无关

于 2013-09-19T19:19:59.080 回答