为啥这两种方法不一样? [关闭]
Posted
技术标签:
【中文标题】为啥这两种方法不一样? [关闭]【英文标题】:Why dont these two methods work the same? [closed]为什么这两种方法不一样? [关闭] 【发布时间】:2018-06-23 08:27:33 【问题描述】:我想创建一个显示数组元素的方法,第一个方法 elementsOfArray
被调用时,而不是在 ()
内显示给定数组的元素,它在方法内显示数组的元素(在这个如果没有元素所以它只显示 , , , ,) 但是名为 elementsOfArray1
的方法工作正常我不明白这两种方法之间有什么区别,为什么我必须在方法中声明另一个数组只使用我在()
中声明为参数的那个?
class Program
static void elementsOfArray(string[] array)
array = new string[array.Length];
int i;
for ( i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
Console.WriteLine(array[i]);
static void elementsOfArray1(string[] array)
string[] array1 = new string[array.Length];
int i;
for (i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
Console.WriteLine(array[i]);
static void Main(string[] args)
string[] names = "Robert", "Allen", "Brandon", "Jack", "Erwin" ;
elementsOfArray(names);
elementsOfArray1(names);
Console.ReadKey();
【问题讨论】:
你能给我们两个完整的输出吗?这可能有助于我们真正发现差异。 “为什么我必须在方法中声明另一个数组,而不是只使用我在 () 中声明为参数的数组?”你没有。这实际上就是把一切都搞砸的东西。第二种方法中的string[] array1 = new string[array.Length];
行不执行任何操作。第一种方法中的array = new string[array.Length];
行把一切都搞砸了。所以只需删除这些行。
@Dennis_E 我认为这甚至没有必要我可以直接循环,非常感谢
【参考方案1】:
很明显!
在第一种方法elementsOfArray
中,您将再次初始化您的数组:
array = new string[array.Length];
然后你把它变成空的。但在第二个elementsOfArray1
:
string[] array1 = new string[array.Length];
int i;
for (i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
您正在循环通过array
,而不是array1
,并且您没有更改array
【讨论】:
啊,我明白了,谢谢你的解释,我明白了 更正这是您的代码 sn-p 中发生的事情【参考方案2】:那是因为您在第一种方法中重新分配 array
和 new string[array.Length];
即 total number of array items but not copying array items values
static void elementsOfArray(string[] array)
array = new string[array.Length];
int i;
for (i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
//Console.WriteLine(array[i]);
在第二种方法 string[] array1 = new string[array.Length];
中。 array1
还包含 5 个空字符串的数组
static void elementsOfArray1(string[] array)
string[] array1 = new string[array.Length];
int i;
for (i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
// Console.WriteLine(array[i]);
如果您希望两种方法的行为相同。只需替换
for (i = 0; i < array.Length - 1; i++)
Console.Write(array[i] + ",");
与
for (i = 0; i < array.Length - 1; i++)
Console.Write(array1[i] + ",");
您将获得相同的结果,即,,,,,
【讨论】:
以上是关于为啥这两种方法不一样? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 React Native 中,这两种方法中哪种 Async Await 方法更好,为啥?