使用FileHelpers模块

时间:2016-09-16 21:10:46

标签: c# .net visual-studio filehelpers

我正在使用FileHelpers nuget来读取文件。它作为例外工作,但当我尝试在Visual Studio中调试时,它会向我发出警告。

如何摆脱warning CS0649: Field 'Orders.Freight' is never assigned to, and will always have its default value null

 class Orders : INotifyRead
{
    [FieldFixedLength(10)]
    public string Freight;
    public void BeforeRead(BeforeReadEventArgs e)
    {
        if (e.RecordLine.StartsWith("Machine"))
            // ||
            // e.RecordLine.StartsWith("-"))
            e.SkipThisRecord = true;
    }
    public void AfterRead(AfterReadEventArgs e)
    {
        //  we want to drop all records with no freight
        if (Freight == "_raw")
            e.SkipThisRecord = true;
    }
}

3 个答案:

答案 0 :(得分:3)

不,不要将默认值明确指定给Freight

警告是合法的,因为您从未真正为该字段分配值。

您没有指定值,因为该字段会被魔法填充。 (顺便说一句,这就是我不喜欢魔法的原因;但这完全是另一回事。)

因此,最好的方法是承认警告是合法的但是要考虑的事实,并明确地压制它。

那么,看一下#pragma warn指令的文档: https://msdn.microsoft.com/en-us/library/441722ys.aspx

答案 1 :(得分:1)

为了完整起见,我只是想结合一下['回答和迈克的回答 - 没有任何原创,只是试图帮助下一个穿过这个页面的人。

Per blins:你可以设置值等于null并且第一个警告"字段XYZ被分配给但从未使用"

public string Freight = null; //or = "", or = default(string) (which is null)

Per Mike," magic"他所说的是反思。变量在运行时分配给。这是编译器无法检测到的。更多关于Mike关于抑制此处警告的答案:Suppressing "is never used" and "is never assigned to" warnings in C#

要禁止显示#34;永远不会使用字段XYZ",请执行以下操作:

#pragma warning disable 0169
... field declaration
#pragma warning restore 0169

禁止显示"字段XYZ永远不会分配给,并且始终具有默认值XX",您可以这样做:

#pragma warning disable 0649
... field declaration
#pragma warning restore 0649

答案 2 :(得分:0)

你基本上有两种选择,哪种方式真正取决于意图(建议一种或另一种是主观的)。首先,如果Orders类型的设计要求规定它应该具有空的默认值,则可以消除警告。

public string Freight = null;

以上只是澄清了意图,因此消除了警告。

另一种方法是抑制警告,如其他答案所述。在您的情况下,如果假设该值应该通过Reflection设置,那么这种替代方案在这种情况下似乎是不合适的。