我正在进行一项任务,我应该在数组中存储一些字符串数据。每个新字符串都应该存储在一个单独的数组中,这就是为什么我需要一个返回一个新数组的方法,该数组具有用户给出的名称。 每次调用此方法时,我想要的是一个带有uniq名称的新数组。
在第2行,我收到一个错误:在此范围内无法声明名为“_arrayNameFromUser”的本地或参数,因为该名称用于封闭的本地范围以定义本地或参数测试
那么如何创建一个具有用户指定名称的新数组?
A local or parameter named '_arrayNameFromUser' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter test
static string[] NewArary(string arrayNameFromUser)
{
string[] arrayNameFromUser = new string[2];
return arrayNameFromUser;
}
答案 0 :(得分:4)
给它一个不同于参数的名称:
static string[] NewArary(string name)
{
string[] ret = new string[2];
ret[0] = name;
return ret;
}
请注意,C#命名约定仅对字段使用_underscorePrefixed
名称,而不使用参数或本地,并且通常仅限于static
字段(因为可以使用{访问实例字段{1}}),请参阅下面的标识符传统大写的示例:
this.
(虽然我使用public class TypeName
{
private static readonly String _staticField = "foo";
private Int32 field;
public Int32 Property { get { return this.field; } }
public const String PublicConstant = "bar";
public void Method(Uri parameter) {
Int32 local = 123;
}
}
代替Int32
和int
代替String
是一个有争议的立场:D)
答案 1 :(得分:2)
在编译时/运行时之间你有一些困惑。您不会在运行时创建新变量。
我怀疑你需要的是Dictionary<string,string[]>
。然后,而不是调用NewArary
(原文如此),而是执行:
Dictionary<string,string[]> arrays = new Dictionary<string,string[]>();
//NewArary("abc");
arrays.Add("abc", new string[]{});
然后你会通过以下方式获得abc
数组:
var thatArray = arrays["abc"];