0

我搜索和搜索,但找不到任何类似的东西。根据我所知道的一切,它应该可以工作。

  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

4

2 回答 2

3

(注意单引号)

parser.ColumnDelimiter = ',';
于 2013-09-06T03:25:31.277 回答
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为字符数组,因为它需要一个字符或空值。

于 2013-09-06T03:33:23.867 回答