[必需]数据注释最合适的默认字符串值是什么?

问题描述 投票:0回答:1

我正在学习 C# .NET 8 Razor Pages 的模型绑定和验证。我设置了一个简单的输入模型来测试验证(来自 ASP.NET Core Razor Pages in Action,Mike Brind):

        public class InputModel
        {
            [Required]
            public string CountryName { get; set; }
            [Required, StringLength(2, MinimumLength = 2)]
            public string CountryCode { get; set; }
        }

但是我收到以下编译器警告:

Warning CS8618 Non-nullable property 'CountryName' must contain a non-null value when exiting constructor. Consider declaring the property as nullable.
,与
CountryCode
相同。

这很容易理解,我应该为

CountryName
CountryCode
分配一个值,或者将它们设置为可为空,但什么是最正确的,为什么?

  1. public string CountryName { get; set; } = default!;
  2. public string CountryName { get; set; } = string.Empty;
  3. public string CountryName { get; set; } = "";
  4. public string? CountryName { get; set; }
  5. public string? CountryName { get; set; } = default;
  6. 还有其他事
c# .net razor razor-pages .net-8.0
1个回答
0
投票

这只是一个警告,告诉您,我们应该将其设置为非空。您使用的所有选项都可以,在我看来,如果您不想在代码中进行可空检查,您可以使用

public string CountryName { get; set; } = string.Empty;
public string CountryName { get; set; } = "";

但是由于你的代码里面有要求验证,如果你用好了验证的话它不会为空,所以不需要设置默认值,你也可以选择

public string? CountryName { get; set; }

另一种忽略此警告的方法是修改csproj,如下所示:

<Nullable>disable</Nullable>
© www.soinside.com 2019 - 2024. All rights reserved.