0) { foreac-6ren">
gpt4 book ai didi

c# - foreach 没有初始化循环变量

转载 作者:行者123 更新时间:2023-11-30 22:46:57 25 4
gpt4 key购买 nike

我在 ASP.NET MVC 的局部 View 中使用 foreach 循环遍历对象的 IList。

这是完整的代码(Message 是我的模型类之一)。

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IList<Message>>" %>

<%
if (ViewData.Model.Count > 0)
{
foreach (MvcTest.Models.Message m in ViewData.Model)
{
Response.Write(m.RenderHtml());
}
}

%>

出于某种原因,这会在 ResponseWrite 上生成 CS0165 - 提示 m 可能未初始化。

我改写成这样:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IList<Message>>" %>

<%
//Can't see why I have to declare this as a variable, but I get CS0165 if I use ViewData.Model directly in the foreach
IList<MvcTest.Models.Message> messages = ViewData.Model;
if (messages.Count > 0)
{
foreach (MvcTest.Models.Message m in messages)
{
Response.Write(m.RenderHtml());
}
}

%>

即为 IList 显式声明一个变量,而不是仅仅使用(强类型)模型,它工作正常。

谁能解释为什么我所做的可以解决问题?

最佳答案

尝试将 Inherits 声明更改为

Inherits="System.Web.Mvc.ViewUserControl<System.Collections.Generic.IList<MvcTest.Models.Message>>" 

不过,我不确定它是否有帮助。

关于c# - foreach 没有初始化循环变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com