C# 无法将类型“char[]”隐式转换为“string[]”

C# 无法将类型“char[]”隐式转换为“string[]”,c#,asp.net,string,char,C#,Asp.net,String,Char,strArr是完整的字符串,我正在拆分它以获得不同的标题n date,但我希望它们位于字符串数组中。我申请的那一刻。 ToArray{in string[]titl=item.Title.ToArray;} 错误消息 {无法将类型“string”隐式转换为“string[]”更改为 {无法将类型“char[]”隐式转换为“string[]” 。类数据中的所有内容也是字符串类型 public class Data { public string Date { ge

strArr是完整的字符串,我正在拆分它以获得不同的标题n date,但我希望它们位于字符串数组中。我申请的那一刻。 ToArray{in string[]titl=item.Title.ToArray;}

错误消息

{无法将类型“string”隐式转换为“string[]”更改为 {无法将类型“char[]”隐式转换为“string[]”

。类数据中的所有内容也是字符串类型

public class Data
{

    public string Date
    {
        get;
        set;
    }

    public string Title
    {
        get;
        set;
    }
}

string xml1 = Search();
字符串[]strArr=xml1.Split'|'

    int i,j;
Data item = new Data();

 for (i = 0; i < strArr.Count(); i = i + 2)

        {
            if (strArr[i].ToString() != "")
            {
                item.Title = strArr[i];
                string[] titl = item.Title.ToArray();
            }
        }
        for (j = 1; j < strArr.Count(); j = j + 2)
        {
            item.Date = strArr[j];
            string[] Dat = item.Date.ToArray();

        }

字符串上的ToArray方法提供字符数组。可以使用linQ select方法将字符选择为字符串

string[] titl = item.Title.Select(c=>c.ToString()).ToArray();
您可能需要重新考虑,如果您想要字符串数组或字符数组,就像想要字符数组一样,那么您需要将标题数组的声明从string更改为char

对字符串调用.ToArray将返回char[],而不是string[]。这两种类型之间没有隐式转换

要使此工作正常,请尝试以下操作:

string[] titl =
        item.Title.ToCharArray().Select(c => c.ToString()).ToArray();
var xml1 = "X|A|Y|B|Z|C|W|D";
var strArr = xml1.Split('|');

var items =
    strArr.Where((x, n) => n % 2 == 0)
        .Zip(
            strArr.Where((x, n) => n % 2 == 1),
            (t, d) => new Data()
            {
                Title = t,
                Date = d
            })
        .ToArray();
根据您在下面的评论,尝试以下操作:

string[] titl =
        item.Title.ToCharArray().Select(c => c.ToString()).ToArray();
var xml1 = "X|A|Y|B|Z|C|W|D";
var strArr = xml1.Split('|');

var items =
    strArr.Where((x, n) => n % 2 == 0)
        .Zip(
            strArr.Where((x, n) => n % 2 == 1),
            (t, d) => new Data()
            {
                Title = t,
                Date = d
            })
        .ToArray();
我得到这个结果:

返回一个字符类型数组

由于您需要所有标题和日期,您应该有一个类型数据数组:


您不再需要2个for循环。

您还没有向我们展示strArray的声明,这没有任何帮助。这是一个字符串,还是一堆字符串?@JonSkeet OP说它是字符串类型。如果你正在使用字符串,为什么要调用ToArray?你想处理单个字符吗?为什么你首先希望它是一个数组?首先,这是一个令人困惑的名称。接下来,您如何期望strArray[i].ToString为空字符串?你期望strArray[i]是什么?我不认为OP真的希望每个字符都是字符串。@YuvalItzchakov-我想这就是他想要的。或者你是说你认为他只需要一个字符串数组?我认为OP实际上有某种需要拆分的分隔字符串。@Nancy-它没有返回字符。我已经测试了这段代码。它会这样做:ABC=>{A,B,C}-不是{A',B',C}。@Enigmativity谢谢,我会尝试其他方法:这不起作用,我已经尝试过了。你能解释一下什么不起作用吗,因为我用answerstring[]titl=item.Title中的第二条语句得到char数组。选择C=>C.ToString.ToArray;正在返回字符数组,但我需要字符串数组。它正在返回字符串数组,否则将无法编译。您可以通过titl.GetTypeData.length检查类型ot titl是否为字符串数组。Data是一个类,它的标题和日期都在sorry中,这是一个键入错误。它是items.Length我以后在代码中需要这个titl变量,如果我像var titl=items[i].Title那样做,那么它同样会给字符串[]带来相同的错误:@Shaharyar,如果你循环i检查items.Length而不是strArr.Length,你将只读取字符串的前半部分items@BlasSoriano不我正在使用I和I+1访问循环体中的strArr。我将遍历整个数组