【问题标题】:C# Visual studio for mac: intellisense is autocompleting wrong . Option to disable?C# Visual Studio for mac:智能感知自动完成错误。禁用选项?
【发布时间】:2021-08-09 16:24:05
【问题描述】:

给定两个相互继承的类 (Animal -> Cow) ,子类覆盖一个方法 (MakeSound)。当我遍历动物列表并编写以下内容时: if(animal is Cow){

如果我想在 if - 语句中添加: animal.MakeSound();

自动完成将其更改为:

((Cow)animal). MakeSound

这本身并没有错,但在很大程度上是多余的,因为我覆盖了 MakeSound,因此不需要强制转换为 Cow。

有没有办法在 VS for Mac 中禁用这种多余的自动完成行为?

【问题讨论】:

    标签: c# autocomplete polymorphism


    【解决方案1】:

    根据谷歌的快速搜索,目前似乎没有关闭此特定功能的方法,至少在使用 VS for Mac 时不容易(在除此之外的所有其他情况下,这非常有用,所以我建议重新考虑特定的行动方案)。

    不过,我想对您的要求提出质疑。我认为这里的困惑在于您说:

    if (animal is Cow){
        animal.MakeSound();
    }
    

    您告诉编译器animal 的类型很重要,通过检查它是否为Cow,但是您说您不关心animal 的类型,因为该方法是虚拟的。所以我建议重新考虑你是如何在这里组织你的代码的。 animal 的类型要么很重要,要么不重要。如果您的 if 检查正文包含 Cow 特定逻辑,请考虑将您对 MakeSound() 的调用移至其他类型无关紧要的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      相关资源
      最近更新 更多