Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数组长度不为';在智能意义上看不到_C#_C# 4.0 - Fatal编程技术网

C# 数组长度不为';在智能意义上看不到

C# 数组长度不为';在智能意义上看不到,c#,c#-4.0,C#,C# 4.0,现在,我将消息数组作为查询字符串发送到另一个页面。但是,当我捕获下一个页面时,我们有一个arr.Length know(通常显示intellisense),但在本例中它不显示 这是另一页的消息 private void check(string keyword , params Array[] msg_arr) { switch (keyword.ToUpper()) { case "SETTELG":

现在,我将消息数组作为查询字符串发送到另一个页面。但是,当我捕获下一个页面时,我们有一个arr.Length know(通常显示intellisense),但在本例中它不显示

这是另一页的消息

 private void check(string keyword , params Array[] msg_arr)
    {
        switch (keyword.ToUpper())
        {
            case  "SETTELG":
                Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr" + msg_arr);

                break;
下面的代码是我想要捕获传递的值和数组(msg_arr)的下一页,但是长度不起作用

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string Moose = Request.QueryString[1];
        }

        if (msg_arr != null)
        {
            if ((msg_arr.Length == 3) && (msg_arr[1].ToLower() == "slett"))

            {

            }


        }
    }
这是第二个代码截图,您可以看到未显示的长度

这里有很多错误

private void check(string keyword , params Array[] msg_arr)
此函数是否真的传递了一个
array
s数组?我认为
string[]
object[]
更可能被传递

Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr" + msg_arr);
这将调用
msg\u arr
上的
ToString()
,它作为一个数组,将产生如下结果:

"../SMSFunction/SeenSMS.ascx?value=1&arrSystem.Array[]"
Array
不会重写
ToString()
,因此您可以从中获得输出类型的完全限定名的数组,我认为这不是您想要的

最后,我们看到了您的第二段代码,但您甚至没有向我们展示任何试图设置新
msg_arr
变量的代码。但是它无法获得原始值
msg_arr
,因为您还没有传递它


您需要决定如何将数组打包到查询字符串中。如果说,
msg_arr
应该是可读字符串的数组(
check
定义中的
params string[]msg_arr
),那么您可以尝试以下操作:

Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr=" + string.Join("|",msg_arr));
protected void Page_Load(object sender, EventArgs e)
{
    string[] msg_arr = Request.QueryString["arr"].Split('|');
    /* rest of method */
其中,
|
是不应出现在所传递字符串中的字符。()

然后,您可以使用以下方法将其重建回数组:

Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr=" + string.Join("|",msg_arr));
protected void Page_Load(object sender, EventArgs e)
{
    string[] msg_arr = Request.QueryString["arr"].Split('|');
    /* rest of method */
()


当然,如果字符串的长度(或数量)太大,现在可能会有问题,通过查询字符串传递它们可能根本不合适。

这里有很多错误

private void check(string keyword , params Array[] msg_arr)
此函数是否真的传递了一个
array
s数组?我认为
string[]
object[]
更可能被传递

Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr" + msg_arr);
这将调用
msg\u arr
上的
ToString()
,它作为一个数组,将产生如下结果:

"../SMSFunction/SeenSMS.ascx?value=1&arrSystem.Array[]"
Array
不会重写
ToString()
,因此您可以从中获得输出类型的完全限定名的数组,我认为这不是您想要的

最后,我们看到了您的第二段代码,但您甚至没有向我们展示任何试图设置新
msg_arr
变量的代码。但是它无法获得原始值
msg_arr
,因为您还没有传递它


您需要决定如何将数组打包到查询字符串中。如果说,
msg_arr
应该是可读字符串的数组(
check
定义中的
params string[]msg_arr
),那么您可以尝试以下操作:

Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr=" + string.Join("|",msg_arr));
protected void Page_Load(object sender, EventArgs e)
{
    string[] msg_arr = Request.QueryString["arr"].Split('|');
    /* rest of method */
其中,
|
是不应出现在所传递字符串中的字符。()

然后,您可以使用以下方法将其重建回数组:

Response.Redirect("../SMSFunction/SeenSMS.ascx?value=1&arr=" + string.Join("|",msg_arr));
protected void Page_Load(object sender, EventArgs e)
{
    string[] msg_arr = Request.QueryString["arr"].Split('|');
    /* rest of method */
()


当然,如果字符串的长度(或数量)太大,现在可能会有问题,通过查询字符串传递它们可能根本不合适。

您不能在查询字符串中传递整个集合。您唯一能做的就是传递集合的一个元素。i、 无法传递数组,但可以传递数组[0]。toString()。请通过会话变量以简单的方式执行此操作。将数组存储在Page1.aspx中的会话变量中,并在Page2.aspx中检索。示例代码如下所示

第1.aspx页

   protected void Page_Load(object sender, EventArgs e) 
    { 
      int[] array = { 1, 2, 3, 4, 5 }; 
      Session["Array"] = array; Response.Redirect("About.aspx"); 
    }
第2.aspx页

 protected void Page_Load(object sender, EventArgs e) 
    { 
      int[] array; 
      if (Session["Array"] != null) 
      { 
         array = (int[])Session["Array"]; 
         if (array.Length == 3) 
         { 
            /////implementaion 
         } 
      } 
    }

不能在查询字符串中传递整个集合。您唯一能做的就是传递集合的一个元素。i、 无法传递数组,但可以传递数组[0]。toString()。请通过会话变量以简单的方式执行此操作。将数组存储在Page1.aspx中的会话变量中,并在Page2.aspx中检索。示例代码如下所示

第1.aspx页

   protected void Page_Load(object sender, EventArgs e) 
    { 
      int[] array = { 1, 2, 3, 4, 5 }; 
      Session["Array"] = array; Response.Redirect("About.aspx"); 
    }
第2.aspx页

 protected void Page_Load(object sender, EventArgs e) 
    { 
      int[] array; 
      if (Session["Array"] != null) 
      { 
         array = (int[])Session["Array"]; 
         if (array.Length == 3) 
         { 
            /////implementaion 
         } 
      } 
    }

msg_arr
在第二段代码中来自何处?页面加载中的
msg_arr
的定义在何处?有趣的是,它在初始if语句中没有红线,而
msg_arr
在第二段代码中来自何处?页面加载中的
msg_arr
的定义在何处?有趣的是,它不是但在初始if语句中用红线标出