为什么我不能在 C# 中将'foreach'与字典一起使用?



我有以下类定义:

[Serializable]
[DataContract]
public class Models
{
[DataMember]
public Dictionary<string, string> models { get; set; }
public Models()
{
models = new Dictionary<string, string>();
}
}

然后我有一个方法,让字典写入ini文件。

public bool write_all_model_names(Models models)
{
bool write_status = false;
try
{
foreach (KeyValuePair<string, string> model in models)
{
Write(model.Key, model.Value);
}
write_status = true;
}
catch
{
}
return write_status;
}

当我试图编译时,我得到了以下错误。

**Error**   CS1579  foreach statement cannot operate on variables of type 'Models' because 'Models' does not contain a public instance or extension definition for 'GetEnumerator'  CPTD_SJQ_UI 

"models"是一个字典列表,为什么不循环使用呢?

您的问题是您使用的糟糕命名方案的直接后果:在foreach行中,您用models名称引用Models类,而您想要迭代的是Models类中的models属性。

简而言之:

foreach (KeyValuePair<string, string> model in models.models)

再次,注意你的命名有多糟糕。

函数models中的

Models类型的对象。所以你必须使用

foreach (KeyValuePair<string, string> model in models.models)

最新更新