4

我创建了一个带有 Amount 获取/设置的类调用 Sales:

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

4 回答 4

4

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

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

于 2012-05-15T03:09:18.257 回答
2

我可能无法很好地解释它。但是 get/set 属性实际上在某种程度上等同于方法。话虽如此,我相信您不能在函数之外调用方法,对吧?

于 2012-05-15T03:09:28.670 回答
2
class Test
{
  Sales.Amount = "10";
  public static VoidSales() 
  {
   .....
  }
}

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

您需要创建一个构造函数并将分配移到那里。IE

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

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

}

于 2012-05-15T03:27:53.973 回答
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";    
    }
}    
于 2012-05-15T03:27:05.980 回答