哪一个更快/更好?
这个:
List<User> list = new List<User>();
User u;
foreach (string s in l)
{
u = new User();
u.Name = s;
list.Add(u);
}
Run Code Online (Sandbox Code Playgroud)
或者这一个:
List<User> list = new List<User>();
foreach (string s in l)
{
User u = new User();
u.Name = s;
list.Add(u);
}
Run Code Online (Sandbox Code Playgroud)
我的新手开发技巧告诉我第一个更好,但是我的一个朋友告诉我错误,但不能给我一个很好的理由为什么第二个更好.
性能有什么不同吗?
我是新的使用自定义ModelBinders,我一直在环顾四周,我找不到任何与此特定案例相关的帖子.
我有一个像这样的实体:
public class DynamicData
{
public IList<DynamicDataItem> DynamicDataItems{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
在视图中我绑定它如下:
@Html.EditorFor(model => model.DynamicDataItems);
Run Code Online (Sandbox Code Playgroud)
我在DynamicDataItems类中有特殊信息,我想以特定的方式检索,所以我创建了自己的Model Binder.
public class DynamicDataItemBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
var key = bindingContext.ModelName;
var valueProviderResult = bindingContext.ValueProvider
.GetValue(key);
if (valueProviderResult == null ||
string.IsNullOrEmpty(valueProviderResult
.AttemptedValue))
{
return null;
}
//Here retrieve my own Information
return DynamicDataItem;
}
}
Run Code Online (Sandbox Code Playgroud)
bindingContext.ModelName包含"DynamicDataItem [0]".
如果我使用bindingContext.ValueProvider.ContainsPrefix(key),它返回true,但是当我执行GetValue(key)时,它返回null.如果我检查ValueProvider包含的内容,我会看到在"DynamicDataItem [0]"中有几个项目的Key Starting.我如何处理从当前绑定的项目的所有字段中检索信息("DynamicDataItem [0]")?我应该逐一检索它们吗?像这样:
var result1= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Id");
var result2= bindingContext.ValueProvider.GetValue("DynamicDataItem[0].Name");
Run Code Online (Sandbox Code Playgroud)
我将非常感谢您给我的任何指导.