注册 登录
编程论坛 C# 论坛

在类里面泛型字符串数组打印出来就正常,回到调用它的主程序里面打印,这个泛型数就自动变成一样的啦?

show147 发布于 2021-07-12 16:22, 1171 次点击

只有本站会员才能查看附件,请 登录


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        public List<String[]> SelectNums = new List<string[]>();
        private string[] nums = new string[7];
        Random ra = new Random();
        public void Sjs(int item)
        {
            Random ra = new Random();
            for (int i = 0; i < item; i++)
            {
                for (int z = 0; z < 7; z++)
                {
                    this.nums[z] = ra.Next(10).ToString();
                }
                this.SelectNums.Add(nums);
                 for (int z = 0; z < 7; z++)
                 {
                    Console.Write(this.SelectNums[i][z]+"  ");
                 }
                 Console.ReadLine();
            }
        }
        static void Main(string[] args)
        {
            Program li = new Program();
            li.Sjs(2);
             for (int i = 0; i < 2; i++)
            {
                Console.Write("返回   ");
                for (int z = 0; z < 7; z++)
                {
                    Console.Write(li.SelectNums[i][z] + "  ");  
                }
                 Console.ReadLine();
            }
           
        }
    }
}
2 回复
#2
apull2021-07-12 17:17
private string[] nums= new string[7];
这个就new了一次,后面的循环中都是改变num的值,你把sjs中的输出单独提出来就会发现添加的2次num值是相同的。

更改:
程序代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        public List<String[]> SelectNums = new List<string[]>();
        private string[] nums;// = new string[7];
        Random ra = new Random();
        public void Sjs(int item)
        {            
            //Random ra = new Random();
            for (int i = 0; i < item; i++)
            {
                nums = new string[7];//生成新的数组
                for (int z = 0; z < 7; z++)
                {
                    this.nums[z] = ra.Next(10).ToString();
                }
                this.SelectNums.Add(nums);
                 
            }
            for (int i = 0; i < item; i++)
            {
                 for (int z = 0; z < 7; z++)
                 {
                    Console.Write(this.SelectNums[i][z]+"  ");
                 }
                 Console.WriteLine();
            }
        }
        static void Main(string[] args)
        {
            Program li = new Program();
            li.Sjs(2);
             for (int i = 0; i < 2; i++)
            {
                Console.Write("返回   ");
                for (int z = 0; z < 7; z++)
                {
                    Console.Write(li.SelectNums[i][z] + "  ");  
                }
                 Console.WriteLine();
            }
           
        }
    }
}
#3
show1472021-07-13 11:44
非常感谢!!
1