如何从堆栈中检索数组

时间:2019-05-05 06:29:07

标签: c#

我想在正在开发的项目中实现一个堆栈,因为我是一个初学者,所以以前没有使用过堆栈。我只是觉得他们会解决问题。 我对它们的工作方式有一个大致的了解,但是在尝试检索id已推送到堆栈中的数组时遇到了麻烦,正在返回

static void Main(string[] args)
{
        int G;
        int [] A=new int [2];
        Stack st = new Stack();

        for (G = 0; G < 5; G++)
        {
            A[0] = G;
            A[1] = G;


            st.Push(A);
        }

        foreach (Object obj in st)
        {
            Console.WriteLine(obj);
        }

        Console.ReadKey();
}

我没有得到一组数组,而是得到System.Int32[]-如何返回数组的内容

1 个答案:

答案 0 :(得分:1)

问题是您正在使用

begin

CREATE TABLE #tbl
WITH
( DISTRIBUTION = ROUND_ROBIN
)
AS
SELECT 
       ROW_NUMBER() OVER(
       ORDER BY
                (
                    SELECT 
                           NULL
                )) AS                                            Sequence
     , CONCAT('SELECT TOP(1) * FROM ', s.name, '.', t.[name]) AS sql_code
FROM sys.pdw_replicated_table_cache_state AS p
JOIN sys.tables AS t
         ON t.object_id = p.object_id
JOIN sys.schemas AS s
         ON t.schema_id = s.schema_id
WHERE p.[state] = 'NotReady';

DECLARE @nbr_statements INT=
        (
            SELECT 
                   COUNT(*)
            FROM #tbl
        ), @i INT= 1;

    WHILE @i <= @nbr_statements

        BEGIN
        DECLARE @sql_code NVARCHAR(4000)= (SELECT 
        sql_code
        FROM #tbl
        WHERE Sequence = @i);
        EXEC sp_executesql @sql_code;
        SET @i+=1;
        END;
        DROP TABLE #tbl;
        SET @i = 0;
        WHILE
              (
                  SELECT TOP (1) 
                         p.[state]
                  FROM sys.pdw_replicated_table_cache_state AS p
                  JOIN sys.tables AS t
                           ON t.object_id = p.object_id
                  JOIN sys.schemas AS s
                           ON t.schema_id = s.schema_id
                  WHERE p.[state] = 'NotReady'
              ) = 'NotReady'
            BEGIN
                IF @i % 100 = 0
                    BEGIN
                        RAISERROR('Replication in progress' , 0, 0) WITH NOWAIT;
                    END;
                SET @i = @i + 1;
            END;

END

将对象作为参数传递。此方法需要一个字符串作为输入,因此您应该先将数组转换为字符串。

这个问题可能会帮助您: int array to string

这应该有效:

Console.WriteLine(obj);

此外,您还应该注意,要在堆栈中压入相同的数组五次。