小编Sam*_*uel的帖子

我应该公开可空或HasFoo字段吗?

我正在从XML格式中读取一些数据并将其放入我的类中,我只是想知道关于可以为空的字段的最佳实践是什么,如果它们是空的,则具有默认值.未提供的值不需要写回文件.

我考虑使用可空类型,但是,在指定默认值的代码中最好的方法是什么(尽管我不需要每个字段的默认值,因为并非所有字段都具有指定的默认值或默认值为0)

目前我正在使用这个:

class SomeElement
{
    public const int DefaultFoo = 123;

    public int? Foo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但不知道以下是否更明显:

class SomeElement
{
    // Setting HasFoo to false will set Foo to the default value
    public bool HasFoo { get; set; }
    // Setting Foo to anything will set HasFoo to true
    public int Foo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

由于某些类具有许多属性,因此第二个选项将在类中创建更多方法,但是,如果您不关心Foo是否具有值,则可能更容易使用.

最后的替代方法可能是使用基类中的静态方法或扩展方法来使默认更容易获得(基于此的想法)

// In some method using the class
int value = SomeElementBase.GetValueOrDefault(() => myObj.Foo);
// or …
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
1
解决办法
105
查看次数

标签 统计

c# ×1