【问题标题】:Can we declare a property inside a method in c#?我们可以在 C# 的方法中声明一个属性吗?
【发布时间】:2018-06-24 11:28:46
【问题描述】:

我们可以在方法中声明一个局部变量。但是为什么我们不能在方法中声明一个属性或字段呢?

在下面的示例中,我可以在方法中声明局部变量,但不能声明属性。

我是 C# 新手。所以如果我错了,请纠正我。

class Program
    {
        Public void Learn()
        {
           int f = 5;
          // int a { get; set;};
        }
    }

【问题讨论】:

  • 因为编译器不允许。
  • 为什么要在方法中使用属性?不管static 与否。另外,这不是一个字段,它是一个变量
  • 我是 C# 新手。所以我正在学习为什么我们不能在方法中声明一个属性?
  • 尽管投反对票,这并不是一个坏问题! - 这真的取决于你想要什么样的答案。一种是因为没有意义;另一个是:因为语言是这样定义的。 对于前者:通过ClassName.MethodName.property 而不是ClassName.property 访问它可以获得什么?对于后者:MSDN在类块中声明属性
  • 这应该有助于理解 properties actually are 的含义,以了解为什么不能在方法中声明它们。属性通常用于表示类级别的公共状态,字段用于表示类级别的私有状态。变量在方法级别声明,因为它们不代表对象的状态

标签: c# .net visual-studio c#-4.0 c#-3.0


【解决方案1】:

我可以在静态方法中声明一个字段

你声明的不是一个字段,而是一个局部变量。方法中不存在字段。

这是因为字段和属性表示对象的状态。 MusicPlayer 对象可能具有 IsPlayingVolume 之类的属性作为其属性。这些是对象的“状态”。状态属于对象,而不是该对象的一种特定方法,例如 StartPlaying()

局部变量的目的是临时存储一些值来帮助方法完成它的工作。它们有点像废纸。您可能有一个名为SolveQuadratic(double a, double b, double c) 的方法,并且您可能有一个名为discriminent 的局部变量来存储b * b - 4 * a * c,这样您就不必每次都重写表达式b * b - 4 * a * c

这就是为什么你不能在方法中拥有属性,不管是静态的还是其他的。他们不属于那里。

【讨论】:

  • 感谢@Sweeper 回答这个问题。你能告诉我变量和字段有什么区别吗?我认为两者都与初学者相同。
  • @Gobind 对于初学者来说,字段是在类级别声明的,而变量是在方法中声明的。
  • 感谢@Sweeper 明白这一点。
猜你喜欢
  • 1970-01-01
  • 2011-01-03
  • 2016-02-29
  • 1970-01-01
  • 2022-01-09
  • 2020-07-27
  • 1970-01-01
  • 2016-03-27
  • 2023-03-16
相关资源
最近更新 更多