有时Visual Studio IDE0032建议可能是错误的做法吗?

松鼠

Visual Studio 2019对private给出以下建议_myNumauto-property代替使用起初,我很想这样做,摆脱了这个private变量,并使用了一个属性private set但这并不能提供相同的功能:我希望公共属性公开此给定的信息,并且仅在可以设置此数据的位置放到一个地方-构造函数,也就是readonly关键字。

换句话说,我是对的,这个建议并不总是正确的吗?

public class Foo
{
    public int MyNum { get { return _myNum; } }
    private readonly int _myNum;
    public Foo(int num)
    {
        _myNum = num;
    }
}

在此处输入图片说明

应用自动完成推荐,代码如下所示:

public int MyNum { get; }

public Foo(int num)
{
    MyNum = num;
}
奥利维尔·罗吉尔(Olivier Rogier)

Visual Studio建议您使用只读属性来简化和/或改进基于某些算法的代码,这些算法考虑了不同的通用和标准编码技术来创建干净,精简,健壮和优化的代码。

在这里,目标是替换获取私有字段值而不执行任何其他操作的只读属性以及该私有字段。

因此,如果您接受此情况下列表中的相关建议(VS2017我有几个建议),则在建议的选项中选择“使用自动属性”选项以进行更改时,将自动为您简化书面代码代码(其他肯定不相关):

public class Foo
{
  public int MyNum { get; }
  public Foo (int num)
  {
    MyNum = num;
  }
}

这是一个正确的建议,接受它是合适的。

其他建议会产生您在大多数情况下不需要的东西...

如果计划在getter中添加行为,则可以忽略Visual Studio中的以下建议:

public class Foo
{
  public int MyNum
  {
    get
    {
      return _myNum >= 100 ? 100 : _myNum;
    }
  }
  private readonly int _myNum;
  public Foo(int num)
  {
    _myNum = num;
  }
}

否则,如果您想要一个只读数据成员,则可以使用一个只读字段:

public class Foo
{
  public readonly int MyNum;
  public Foo (int num)
  {
    MyNum = num;
  }
}

C#只读与Get

只读字段与只读属性

只读修饰符和私有设置器之间哪个更好?

字段和属性有什么区别?

但是,如果您需要将此数据成员作为属性(例如,要在序列化中使用或由Visual Studio Designers和Helpers使用),并且通常必须可写...并且如果使用C#9+,则可以使用init -only属性:

public class Foo
{
  public int MyNum { get; init; }
  public Foo (int num)
  {
    MyNum = num;
  }
}

C#9中的Init-Only和ReadOnly有什么区别?

同样,在C#9之前且没有只读属性的情况下,具有与私有字段耦合的属性,并删除了Visual Studio重构辅助建议,而无需禁用此模块,您可以简单地使用经典的getter方法来避免Visual Studio代码重构建议:

public class Foo
{
  private readonly int _myNum;
  public int GetMyNum() => _myNum;
  public Foo(int num)
  {
    _myNum = num;
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AutoCompleteTextView有时显示建议,但有时不显示

来自分类Dev

Visual Studio编译正常时,gcc(mac / linux)错误没有匹配的调用函数

来自分类Dev

在Visual Studio 2013中,为什么我的断点有时会“分离”?

来自分类Dev

在Visual Studio中进行调试时出现“驱动器中没有磁盘”错误

来自分类Dev

Visual Studio中的文件内容有时变为灰色

来自分类Dev

Visual Studio抛出“错误”的编译时异常

来自分类Dev

Visual Studio在打印功能地址时是否有错误?

来自分类Dev

Visual Studio在断言失败时退出,没有错误消息

来自分类Dev

HTML-错误的字母(有时)

来自分类Dev

可能是Visual Studio 2015中的C#编译器错误

来自分类Dev

AJAX <select>值错误(有时)

来自分类Dev

我的“哪个”命令可能是错误的(有时)?

来自分类Dev

滚动时Android Studio有时会滞后

来自分类Dev

尝试修复时Visual Studio 2017错误

来自分类Dev

Android Studio有时无法启动

来自分类Dev

我的“哪个”命令可能是错误的(有时)?

来自分类Dev

node.js请求| 有时是意外的令牌错误,有时不是

来自分类Dev

空指针异常错误...有时

来自分类Dev

游戏有时出现错误#1009

来自分类Dev

C ++相同的代码永远不会在Visual Studio中编译/运行,有时甚至不会在Qt Creator中运行

来自分类Dev

有时无法启动Android Studio,请先尝试

来自分类Dev

仅有时抛出NullReferenceException吗?

来自分类Dev

当我们将记事本保存到桌面文件夹时,Visual Studio主机有时会停止并有时会调度目标抛出错误

来自分类Dev

Android Studio有时看不到模块更改(可能不仅是模块...)

来自分类Dev

带有奇怪字符的Visual Studio错误

来自分类Dev

〜是$ HOME,但是有时吗?

来自分类Dev

新的 Visual Studio for Mac (Xamarin Studio) 与 Windows 上的 Visual Studio 有什么不同吗?

来自分类Dev

Visual Studio 有时不编译

来自分类Dev

Visual Studio 可能是错误的编译器错误

Related 相关文章

  1. 1

    AutoCompleteTextView有时显示建议,但有时不显示

  2. 2

    Visual Studio编译正常时,gcc(mac / linux)错误没有匹配的调用函数

  3. 3

    在Visual Studio 2013中,为什么我的断点有时会“分离”?

  4. 4

    在Visual Studio中进行调试时出现“驱动器中没有磁盘”错误

  5. 5

    Visual Studio中的文件内容有时变为灰色

  6. 6

    Visual Studio抛出“错误”的编译时异常

  7. 7

    Visual Studio在打印功能地址时是否有错误?

  8. 8

    Visual Studio在断言失败时退出,没有错误消息

  9. 9

    HTML-错误的字母(有时)

  10. 10

    可能是Visual Studio 2015中的C#编译器错误

  11. 11

    AJAX <select>值错误(有时)

  12. 12

    我的“哪个”命令可能是错误的(有时)?

  13. 13

    滚动时Android Studio有时会滞后

  14. 14

    尝试修复时Visual Studio 2017错误

  15. 15

    Android Studio有时无法启动

  16. 16

    我的“哪个”命令可能是错误的(有时)?

  17. 17

    node.js请求| 有时是意外的令牌错误,有时不是

  18. 18

    空指针异常错误...有时

  19. 19

    游戏有时出现错误#1009

  20. 20

    C ++相同的代码永远不会在Visual Studio中编译/运行,有时甚至不会在Qt Creator中运行

  21. 21

    有时无法启动Android Studio,请先尝试

  22. 22

    仅有时抛出NullReferenceException吗?

  23. 23

    当我们将记事本保存到桌面文件夹时,Visual Studio主机有时会停止并有时会调度目标抛出错误

  24. 24

    Android Studio有时看不到模块更改(可能不仅是模块...)

  25. 25

    带有奇怪字符的Visual Studio错误

  26. 26

    〜是$ HOME,但是有时吗?

  27. 27

    新的 Visual Studio for Mac (Xamarin Studio) 与 Windows 上的 Visual Studio 有什么不同吗?

  28. 28

    Visual Studio 有时不编译

  29. 29

    Visual Studio 可能是错误的编译器错误

热门标签

归档