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);
}
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()方法来创建一个分隔符数组?