Foreach变量范围

时间:2016-03-31 11:23:54

标签: c# foreach

我希望了解并解决prop范围内PropertyInfoforeach foreach (var prop in props) // For each of type's properties if (prop.GetCustomAttributes(typeof(Mappable)).Any()) mapSwitch = 1; if (isLevelMatch(isContinueToGetData, mapSwitch, props)) { if (model.GetType().GetProperty(prop.Name).GetValue(obj) != null) comModel.FieldValueLet(prop.Name, model.GetType().GetProperty(prop.Name).GetValue(obj)); else comModel.FieldValueLet(prop.Name, DBNull.Value); } 的原因。

代码:

IF

Visual Studio编译器告诉我在第二个prop语句中这个NSSetUncaughtExceptionHandler不存在?任何人都可以解释为什么会这样吗?

2 个答案:

答案 0 :(得分:3)

您需要使用foreach块的括号:

foreach (var prop in props) // For each of type's properties
{
   if (prop.GetCustomAttributes(typeof(Mappable)).Any())
       mapSwitch = 1;

   if (isLevelMatch(isContinueToGetData, mapSwitch, props))
   {
      if (model.GetType().GetProperty(prop.Name).GetValue(obj) != null)
        comModel.FieldValueLet(prop.Name, model.GetType().GetProperty(prop.Name).GetValue(obj));
      else
        comModel.FieldValueLet(prop.Name, DBNull.Value);
   }
}

答案 1 :(得分:0)

您没有任何花括号来表示要为.def("append", FunctionPointer([] (Cube& self, const bp::object& obj) { self.insert(std::make_pair(bp::extract<int>(obj[0]),bp::extract<int>(obj[1]))); })) 中的每个prop运行的代码块。因此,只有紧接着的下一个陈述是。

如果您将大括号添加到当前代码的评估方式,它将如下所示:

props

当您拨打foreach (var prop in props) // For each of type's properties { if (prop.GetCustomAttributes(typeof(Mappable)).Any()) { mapSwitch = 1; } } if (isLevelMatch(isContinueToGetData, mapSwitch, props)) { if (model.GetType().GetProperty(prop.Name).GetValue(obj) != null) { comModel.FieldValueLet(prop.Name, model.GetType().GetProperty(prop.Name).GetValue(obj)); } else { comModel.FieldValueLet(prop.Name, DBNull.Value); } } 电话时,comModel.FieldValueLet已经超出了很长一段时间。