C#不能隐式转换'Char []'类型为'Char?'

时间:2013-09-06 03:22:54

标签: c# char implicit

我搜索并搜索,但找不到任何类似的东西。 根据我所知道的一切,它应该有效。

  string strTest, strSubTest, strDesc;
        using (GenericParser parser = new GenericParser())
        {
            parser.SetDataSource(@"D:\work.csv");

            parser.ColumnDelimiter = @",".ToCharArray();
            parser.FirstRowHasHeader = true;
            parser.MaxBufferSize = 4096;
            parser.MaxRows = 200;

            while (parser.Read())
            {
                strTest = parser["Test"];
                strSubTest = parser["Subtest"];
                strDesc = parser["Description"];
                Console.WriteLine(strTest);

陈述@“,”的代码.ToCharArray();说明标题中的错误。在'Char?'之前,我从未见过像这样的隐式转换。知道我做错了吗?

如果你需要一些背景知识,我使用了这里的GenericParser:http://www.codeproject.com/Articles/11698/A-Portable-and-Efficient-Generic-Parser-for-Flat-F

2 个答案:

答案 0 :(得分:3)

(注意单引号)

parser.ColumnDelimiter = ',';

答案 1 :(得分:0)

问号是一个修饰符,用于赋值类型为char,int和double,以使它们可以为空。因此,char x = null;是语法错误,char? x = null;有效。 char?实际上是Nullable<char>的简写语法。 Nullable<T>无法与引用类型一起使用,因为它们已经可以为空。 Nullable<T>个对象有两个属性,bool HasValue,显而易见,T Value,如果HasValue为true,则返回封装的值;如果为false,则返回异常。

因此,您无法将Delimeter设置为字符数组,因为它需要一个字符或null。