【问题标题】:define get or set in c#在 C# 中定义 get 或 set
【发布时间】:2010-08-14 14:34:08
【问题描述】:

朋友们,我在 c# 的类中使用 get 或 set 时遇到问题 当我使用 get 或 set in 时给出错误(无效的令牌 { 在类中) 请看下面的代码,我有这个问题

static int abcd
{  
    get           
    {  
       return  _abcd; 
    }  
}  

感谢

这是完整的代码,我对你的任何代码都没有这个问题,只是这个:

namespace ConsoleApplication2
{
   class Program
   {
      class Car
      {
         private int _speed;  
         public int Speed;
         {
              get
              {
                return _speed
              }
          }
       }
   }
}

【问题讨论】:

  • 你的班上好像多了一个}
  • 你在这里写的代码很好,问题可能出在你代码的其他地方。确保您拥有的每个代码块都已正确关闭。

标签: c# .net properties get


【解决方案1】:

您发布的 sn-p 没有问题,关于错误也是如此,因为它具有正确的 {} 编号并且顺序正确。

查看您将它放在哪里(可能在课程之外),或在文件中查找额外的}

更新:(在有问题的编辑之后)

您的问题在这里:

public int Speed; // <-- ; should not be here

还有:

return _speed // <-- missing the ;

属性应该这样实现:

public int Speed
{
   get
   {
      return _speed;
   }
}

【讨论】:

  • 这是完整的代码,我对你的任何代码都没有这个问题,但只有这个:class Car{ private int _speed;公共 int 速度; { 获取 { 返回 _speed } }
  • @arash - 答案已更新。您没有正确实现该属性。
【解决方案2】:

您的代码中有两个错误。

  • 您有一个不应该有分号的分号(由 Oded 发现)。
  • 您在应该有分号的地方少了一个分号。

试试这个:

namespace ConsoleApplication2
{
    class Program
    {
        class Car
        {
            private int _speed;  
            public int Speed     // <-- no semicolon here.
            {
                get
                {
                    return _speed;  // <-- here
                }
            }
        }
    }
}

我注意到您最初发布的代码格式错误。我建议您在 Visual Studio 中自动格式化文档以使大括号对齐。这应该使错误更加明显。当代码的格式看起来错误时,您就知道附近有错误。您可以在菜单中找到此选项:编辑 -> 高级 -> 格式化文档或使用键盘快捷键(对我来说是 Ctrl-E D,但对你来说可能会有所不同,具体取决于你的设置)。

我还建议您考虑使用 auto-implemented properties 而不是完整地写出 getter:

namespace ConsoleApplication2
{
    class Program
    {
        class Car
        {
            public int Speed { get; private set; }
        }
    }
}

【讨论】:

  • 在第一个示例中,您可能希望在 public int Speed 之后删除分号。
  • @Dirk D:谢谢。所以实际上他的代码中有两个错误!它只是表明自动实现的属性更容易正确,并且绝对是简单属性的方法。
  • 实际上是@Oded 在他的回答中首先发现了它:)
  • @Dirk D:哦,对了,我没看到。但公平地说,你是注意到我代码中的错误的人......为此付出了巨大的努力。谢谢。
【解决方案3】:

这应该可行:

class Foo
{
    static int _abcd;

    static int Abcd
    {
       get { return _abcd; }
       set { _abcd = value; }    
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多