为什么我们不能直接在List<string> obj= new List<string>()中添加值?
why we cannot add values directly in List<string> obj= new List<string>()?
我想制作城市列表,但是当我尝试在列表中添加值时出现错误
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 ;
}
}
我想知道为什么添加到列表时出错?
你不能在 class 正文中编写这样的代码
您有 2 个选项,要么在声明列表时设置列表的内容
List<string> cities = new List<string>() {"pune", "Mumbai"};
或者,您可以执行当前正在执行的操作,但将一些代码移至 class' 构造函数
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 ;
}
}
阅读更多关于 class 构造函数的信息 here
您可能还想考虑将 cities
设为私有字段
您无法在构造函数或方法主体之外访问您的 class 成员 (list.Add()
),这根本不是有效的 C#。
编译器将成员初始化代码移至构造函数。因此,如果您 new
一个字段,那么 new
实际上存在于(隐式生成或显式声明的)构造函数中。
所以为了可读性,简单地创建一个构造函数并将初始化代码移到构造函数中。
C# 目前不支持并且可能永远不会支持您编写的代码,但这并不是说您无法实现类似的功能。
例如,如果您要声明 string[]
而不是 List<string>
,那么您可以按照您希望的方式声明值。
此外,.ToList<string>()
方法也可用于 return 列表。
这是您修改后的代码:
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>
}
}
我想制作城市列表,但是当我尝试在列表中添加值时出现错误
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 ;
}
}
我想知道为什么添加到列表时出错?
你不能在 class 正文中编写这样的代码
您有 2 个选项,要么在声明列表时设置列表的内容
List<string> cities = new List<string>() {"pune", "Mumbai"};
或者,您可以执行当前正在执行的操作,但将一些代码移至 class' 构造函数
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 ;
}
}
阅读更多关于 class 构造函数的信息 here
您可能还想考虑将 cities
设为私有字段
您无法在构造函数或方法主体之外访问您的 class 成员 (list.Add()
),这根本不是有效的 C#。
编译器将成员初始化代码移至构造函数。因此,如果您 new
一个字段,那么 new
实际上存在于(隐式生成或显式声明的)构造函数中。
所以为了可读性,简单地创建一个构造函数并将初始化代码移到构造函数中。
C# 目前不支持并且可能永远不会支持您编写的代码,但这并不是说您无法实现类似的功能。
例如,如果您要声明 string[]
而不是 List<string>
,那么您可以按照您希望的方式声明值。
此外,.ToList<string>()
方法也可用于 return 列表。
这是您修改后的代码:
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>
}
}