类属性是一个'属性'但是像'类型'一样使用

时间:2012-05-15 03:01:18

标签: c#

我创建了一个类调用Sales,其中包含Amount get / set:

class Sales 
{

 public static string Amount { get; set; }

}

然后我从其他类调用了函数范围:

class Test
{

  Sales.Amount = "10";

  public static VoidSales() 
  {
   .....
  }

}

我收到以下错误:

'Fun.Sales.Amount' is a 'property' but is used like a 'type'

但是当我在一个函数中使用时,它是正确的。

谢谢。

4 个答案:

答案 0 :(得分:4)

您不能将这些类型的赋值语句放在open类上下文中。您只能在方法中进行这些类型的分配。可以在类上下文中完成的唯一分配是类级别字段的初始化。

如果在实例化类时需要进行此赋值,则应在构造函数中完成。

答案 1 :(得分:2)

我可能无法解释清楚。但是get / set属性实际上等同于方法。话虽如此,我相信你不能在函数之外调用一个方法吗?

答案 2 :(得分:2)

class Test
{
  Sales.Amount = "10";
  public static VoidSales() 
  {
   .....
  }
}

这是一个语法问题。您不能在函数外部引用Sales.Amount - 这里您将其定义为属性或变量,并且必须遵循变量(或属性)的规则。

您需要创建一个构造函数并在那里移动赋值。即。

class Test
{
    Test () {
        Sales.Amount=10;
    }
}

错误纯粹是您定义的项目的名称(Sales.Amount)不是函数外部类的上下文中的有效名称。

}

答案 3 :(得分:1)

如果它是一个静态值,那么它已经在你的应用程序的其他地方声明了。您基本上试图在只能进行分配的地方调用方法。

如果这不是静态字段,那么您可以进行分配,然后更改“金额”,例如

class Test 
{ 

  public Sales sales = new Sales()
  {
     Amount = "10" //Assign Value Here
  };

  public Test()  
  { 
     sales.amount = "10"; //Or Assign Value here in constructor
  }  
} 

但是,如果这是一个静态字段,则在构造函数中或在声明静态字段时进行赋值。

class Sales  
{  
   public static string Amount = "10" //You don't require get/set here  
} 

class Test    
{ 
    public Test()
    {
        Sales.Amount = "10";    
    }
}