我想列出城市,但是当我尝试在列表中添加值时却报错
public class ValuesController : ApiController
{
List<string> cities = new List<string>();
cities.Add("pune");
cities.Add("Mumbai");
// GET api/values
public IEnumerable<string> Get()
{
return cities ;
}
}
我想知道为什么添加到列表中时会出错?
答案 0 :(得分:5)
您不能在类主体中编写类似的代码
您有2个选项,可以在声明列表时设置列表的内容
List<string> cities = new List<string>() {"pune", "Mumbai"};
或者,您可以执行当前操作,但是将一些代码移到类的构造函数中
public class ValuesController : ApiController
{
List<string> cities = new List<string>();
public ValuesController()
{
cities.Add("pune");
cities.Add("Mumbai");
}
// GET api/values
public IEnumerable<string> Get()
{
return cities ;
}
}
详细了解类构造器here
您可能还需要考虑将cities
设置为私有字段
答案 1 :(得分:1)
您不能在构造函数或方法主体之外访问这样的类成员(>>> import numpy as np
>>> np.any(df[:,None] == np.array([[111, 222]]), axis=0).all()
False
),这根本不是有效的C#。
成员初始化代码由编译器移至构造函数。因此,如果您list.Add()
一个字段,那么该new
实际上位于(隐式生成或显式声明的)构造函数中。
因此,出于可读性考虑,只需创建一个构造函数并将初始化代码移入该构造函数即可。
答案 2 :(得分:0)
C#当前不支持并且可能永远不支持您编写的代码,但这并不是说您无法实现类似的功能。
例如,如果要声明string[]
而不是List<string>
,则可以按照所需的方式声明值。
此外,.ToList<string>()
方法也可以用于返回列表。
这是您修改的代码:
public class ValuesController : ApiController
{
private string[] cities = { "pune", "Mumbai" }; // cities is now an array of string
// GET api/values
public IEnumerable<string> Get()
{
return cities.ToList<string>(); // .ToList<string>() method returns cities as a List<string>
}
}