相关疑难解决方法(0)

什么是"收益率突破"; 做C#?

我在MSDN中看到过这种语法:yield break但我不知道它是做什么的.有人知道吗?

.net c# yield

470
推荐指数
8
解决办法
13万
查看次数

C#中是否有"空列表"单例?

在C#中,我使用LINQ和IEnumerable一点点.一切都很好(或至少大部分都是如此).

但是,在很多情况下,我发现自己需要一个空IEnumerable<X>的默认值.也就是说,我想

for (var x in xs) { ... }
Run Code Online (Sandbox Code Playgroud)

无需空检查即可工作.现在这是我目前所做的,取决于更大的背景:

var xs = f() ?? new X[0];              // when xs is assigned, sometimes
for (var x in xs ?? new X[0]) { ... }  // inline, sometimes
Run Code Online (Sandbox Code Playgroud)

现在,虽然上面对来说完全没问题 - 也就是说,如果创建数组对象有任何"额外开销"我只是不在乎 - 我想知道:

在C#/ .NET中是否存在"空的不可变IEnumerable/IList"单例?(而且,即使没有,是否有一种"更好"的方式来处理上述情况?)

Java具有Collections.EMPTY_LIST不可变的单例 - "良好类型"的通道Collections.emptyList<T>()- 用于此目的,虽然我不确定类似的概念是否甚至可以在C#中工作,因为泛型的处理方式不同.

谢谢.

c# ienumerable singleton empty-list

72
推荐指数
5
解决办法
3万
查看次数

我似乎已经陷入了NullReferenceExceptions的巨大麻烦

最近我正在开发一种解析和显示网站XML信息的软件.够简单吧?

我正在获取NullReferenceExceptions的LOADS.例如,这种方法:

private void SetUserFriends(List<Friend> list)
{
    int x = 40;
    int y = 3;

    if (list != null)
    {
        foreach (Friend friend in list)
        {
            FriendControl control = new FriendControl();
            control.ID = friend.ID;
            control.URL = friend.URL;
            control.SetID(friend.ID);
            control.SetName(friend.Name);
            control.SetImage(friend.Photo);

            control.Location = new Point(x, y);
            panel2.Controls.Add(control);

            y = y + control.Height + 4;
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

我不得不把一个丑陋的包裹作为罪恶如果在实际的foreach循环周围,以防止异常.

我觉得我只是把绷带放在轮胎上,而不是实际解决问题.有什么办法可以解决这个问题吗?也许我应该读一本关于编程模式的书或不是什么?

真的,我迷路了.我可能会问错误的问题.

.net c# nullreferenceexception

6
推荐指数
1
解决办法
416
查看次数