C#不能在if else语句中隐式地将类型'string'转换为'string []'

时间:2011-10-10 14:42:19

标签: c# arrays string

我正在尝试将字符串读入数组,并且我收到错误“无法将类型'字符串'实现转换为'string []'。

此处发生错误:

string[] sepText = result.Tables[0].Rows[0].Field<string>("WebHTML").UrlDecode();

我的完整if else声明如下:

if (!string.IsNullOrEmpty(result.Tables[0].Rows[0].Field<string>("WebHTML")))
            {
                string[] sepText = result.Tables[0].Rows[0].Field<string>("WebHTML").UrlDecode();
                NewsContent.Text = sepText[1];
                if (!string.IsNullOrEmpty(sepText[0]))
                    Image1.ImageUrl = sepText[0];
                else
                    Image1.Visible = false;
                NewsTitle.Text = String.Format("<a href=\"{0}/news/{1}/{2}.aspx\">{3}</a>", Extensions.GetServerName(true), result.Tables[0].Rows[0].Field<int>("News_Item_ID"), result.Tables[0].Rows[0].Field<string>("Title").UrlFormat(), result.Tables[0].Rows[0].Field<string>("Title"));
                Hyperlink1.NavigateUrl = String.Format("{0}/news/{1}/{2}.aspx", Extensions.GetServerName(true), result.Tables[0].Rows[0].Field<int>("News_Item_ID"), result.Tables[0].Rows[0].Field<string>("Title").UrlFormat());
            }
            else
            {
                Hyperlink1.Visible = false;
                Image1.Visible = false;
            }

感谢您的帮助!

网址解码的EDIT代码:

public static string UrlDecode(this string str)
{
    return System.Web.HttpUtility.UrlDecode(str);
}

6 个答案:

答案 0 :(得分:3)

result.Tables[0].Rows[0].Field<string>("WebHTML")将在第一个表的第一行中为您提供WebHTML字段的值,该字段是单string而不是string[]

您可能希望显示UrlDecode()的代码,因为它看起来像是自定义实现而不是内置框架版本之一。

您还声明UrlDecode方法将string作为参数并返回string。请记住,字符串与字符串数组不同。

答案 1 :(得分:1)

看来你正试图把:

result.Tables[0].Rows[0].Field<string>("WebHTML").UrlDecode();

将字符串返回到字符串数组中。 简单地将你的sepText变量称为字符串而不是字符串数组,你应该好好去,例如:

string sepText = result.Tables[0].Rows[0].Field<string>("WebHTML").UrlDecode();

稍后在您的代码中,您显然需要阅读字符串的内容,如下所示:

Image1.ImageUrl  =sepText;

答案 2 :(得分:0)

假设您使用的UrlDecode是来自herestring,那么结果是string[]而不是{{1}}!

答案 3 :(得分:0)

UrlDecode返回一个字符串,您将其分配给数组。

如果您需要这些部件,则必须使用该字符串来创建Url对象。

Url url = new Url(result.Tables[0].Rows[0].Field<string>("WebHTML"));

然后获取部件。

请参阅:Get url parts without host

答案 4 :(得分:0)

我不认为URLDecode的工作方式与您认为的有效。所有URLDecode都是从字符串中删除URL编码。它不会返回一个字符串数组 - 只是你给它的字符串的解码值。

http://msdn.microsoft.com/en-us/library/system.web.httputility.urldecode.aspx

示例:您的网络浏览器用%20替换空格。这会将%20更改回空格。

答案 5 :(得分:0)

这是因为此行的结果是“string”,并且您尝试将其分配给数组,因为UrlDecode不会生成数组。你可能想要的是使用方法split()来创建一个分隔符数组?