gpt4 book ai didi

c# - 是什么导致 Razor 代码中的 "unassigned local variable"?

转载 作者:太空宇宙 更新时间:2023-11-03 22:02:12 28 4
gpt4 key购买 nike

我在使用某些 Razor C# 代码语法时遇到了一些问题。

我有一个表单,其操作为“website.cshtml”。 website.cshtml 应该获取所有传入的数据,并在

标签中打印出来。

这是我的:

@{
string names = Request.Form["name"];
string [] arrOfnames; // string array to hold names
if (names != null) { // if the name isn't null, split into the array
arrOfNames = names.Split(',');
}
foreach(string name in names)
{
<p>name</p>
}

}

这会导致错误

Use of unassigned local variable 'arrOfNames'.

我在这里做错了什么,我该如何解决?

最佳答案

当局部变量有可能在分配给它之前从读取局部变量时,就会导致 C# 编译器错误。 (我假设代码真的 for (var name in arrOfNames) - 提示! - 或者稍后访问 arrOfNames。)

它 ( arrOfNames ) 必须分配给所有可能的代码路径(由编译器决定)。

如果 names == null 会怎样?什么会 arrOfNames那么呢? C# 确保您对此明确

一种方法是确保在“备用路径”中分配一个值:

string[] arrOfnames; 
if (names != null) {
arrOfNames = names.Split(','); // assigned here
} else {
arrOfNames = new string[0]; // -or- here
}

但是

string[] arrOfnames = null; // assign default. see below.
if (names != null) {
arrOfNames = names.Split(',');
}

IEnumerable<string> arrOfNames = names != null
? names.Split(',')
: null; // "alternate path", but single expression. see below.

var arrOfNames = (names ?? "").Split(',');

也可以。

我建议使用“空集合”而不是 null ,因为仍然可以迭代空的可枚举对象,就像接下来的几行中发生的那样。另一方面,也许它应该死得很丑...

此外,考虑使用接口(interface) IEnumerable<string>因为它通常更适应代码更改。 (尤其是用作方法签名的一部分时。)

快乐编码。

关于c# - 是什么导致 Razor 代码中的 "unassigned local variable"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9693266/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com