从方法/函数C#

时间:2017-04-13 08:18:51

标签: c# arrays

我正在进行一项任务,我应该在数组中存储一些字符串数据。每个新字符串都应该存储在一个单独的数组中,这就是为什么我需要一个返回一个新数组的方法,该数组具有用户给出的名称。 每次调用此方法时,我想要的是一个带有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;
    }

2 个答案:

答案 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; } } 代替Int32int代替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"];