c#不能隐式转换类型'string'& # 39; string [] & # 39;在if else语

本文关键字:string if else 类型 转换 不能 | 更新日期: 2023-09-27 18:10:48

我试图将字符串读取到数组中,我得到错误"不能隐式地将类型'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;
            }

谢谢你的帮助!

编辑URL代码:

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

c#不能隐式转换类型'string'& # 39; string [] & # 39;在if else语

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

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

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

你似乎想把:

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

返回一个字符串,变成一个字符串数组。只要将你的sepText变量声明为字符串而不是字符串数组,你就可以很好地运行了,例如:

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

在后面的代码中,显然需要像这样读取字符串的内容:

Image1.ImageUrl  =sepText;

假设您使用的UrlDecode是这里的一个,那么结果是string而不是string[] !

UrlDecode返回一个字符串,你将它赋值给一个数组。

如果你想要的部分,你必须使用字符串来创建一个Url对象。

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

,然后得到零件。

参见:获取不含host的url部分

我不认为URLDecode的工作方式你认为它的工作方式。URLDecode所做的就是从字符串中移除URL编码。它不返回字符串数组——只返回你给它的字符串的解码值。

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

示例:你的浏览器用%20替换空格。这将把%20变回一个空格

这是因为这一行的结果是"string",而您正试图将其分配给一个数组,因为UrlDecode不产生数组。您可能想要使用split()方法来创建一个分隔符数组?