小编rec*_*ive的帖子

C#中的并行迭代?

有没有办法foreach在C#中对并行枚举进行样式迭代?对于标化的名单,我知道一个可以使用正for循环遍历指数范围内的int,但我真的很喜欢foreachfor了许多的原因.

如果它在C#2.0中有效,则可获得奖励积分

c# iteration foreach loops

7
推荐指数
2
解决办法
1万
查看次数

C#中的代理问题

在下面的程序中,DummyMethod总是打印5.但是如果我们使用注释代码,我们会得到不同的值(即1,2,3,4).任何人都可以解释为什么会这样吗?

        delegate int Methodx(object obj);

        static int DummyMethod(int i)
        {
            Console.WriteLine("In DummyMethod method i = " + i);
            return i + 10;
        }

        static void Main(string[] args)
        {    
            List<Methodx> methods = new List<Methodx>();

            for (int i = 0; i < 5; ++i)
            {
                methods.Add(delegate(object obj) { return DummyMethod(i); });
            }

            //methods.Add(delegate(object obj) { return DummyMethod(1); });
            //methods.Add(delegate(object obj) { return DummyMethod(2); });
            //methods.Add(delegate(object obj) { return DummyMethod(3); });
            //methods.Add(delegate(object obj) { return DummyMethod(4); });

            foreach (var method in methods)
            { …
Run Code Online (Sandbox Code Playgroud)

c# delegates closures

7
推荐指数
1
解决办法
1497
查看次数

这种错综复杂的泛型模式使Eclipse崩溃 - 我可以让它工作吗?

(我正在使用Eclipse Luna 4.4.0,JDK 1.8.0_05)

我正在制作游戏,游戏世界的拓扑结构可以粗略地分解World -> Level -> Tile,其中Tile是一个小的地形单位.我设置了三个项目,一个包含这些结构的一些基类,另外两个是服务器和客户端,它们扩展了基础项目中的结构,以满足每个项目所需的其他内容.像这样:

基地项目:

public class BaseWorld{/* ...code... */}
public class BaseLevel{/* ...code... */}
public class BaseTile{/* ...code... */}
Run Code Online (Sandbox Code Playgroud)

在服务器和客户端项目中:

public class World extends BaseWorld{/* ...extended code... */}
public class Level extends BaseLevel{/* ...extended code... */}
public class Tile extends BaseTile{/* ...extended code... */}
Run Code Online (Sandbox Code Playgroud)

现在在基础项目的许多部分中,有一些返回基类的方法,但在服务器和客户端项目中,这通常意味着我必须重写方法并转换为子类型,因为子项目专门使用子项类型.像这样:

public class BaseLevel{
  BaseLevel getNextLevel(){/* ...code... */}
}

public class Level extends BaseLevel{
  Level getNextLevel(){
    return (Level)super.getNextLevel();
  }
}
Run Code Online (Sandbox Code Playgroud)

这是一种难以维持的痛苦.我发现我可以使用泛型来解决其中的一些问题,具有以下模式:

public class BaseLevel<Level extends BaseLevel<Level>>{
  Level getNextLevel(){/* …
Run Code Online (Sandbox Code Playgroud)

java eclipse generics compiler-errors

7
推荐指数
1
解决办法
136
查看次数

Python新手类设计问题

我正在试图找出设计几个类的最佳方法.我对Python(以及一般的OOP)很陌生,只是想确保我做得对.我有两个类:"用户"和"用户".

class User(object):
   def __init__(self):
       pass

class Users(object):
   def __init__(self):
       self.users = []

   def add(self, user_id, email):
       u = User()
       u.user_id = user_id
       u.email = email
       self.users.append(u)

users = Users()
users.add(user_id = 1, email = 'bob@example.com')
Run Code Online (Sandbox Code Playgroud)

如果我想要检索我的用户,我使用:

for u in users.users:
    print u.email
Run Code Online (Sandbox Code Playgroud)

"users.users"似乎有点多余.我这样做了吗?

python oop iterator

6
推荐指数
3
解决办法
237
查看次数

由于缺少.config文件而导致单元测试失败

我是单元测试的新手,所以我可能误解了一些大的东西,但我被要求为我的WCF服务创建一些单元测试.这是一个非常简单的服务,它执行存储过程并返回结果.我操作的第二行是这样的:

string conn = ConfigurationManager
    .ConnectionStrings["AtlasMirrorConnectionString"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)

部署服务时一切正常,但在单元测试下,配置文件似乎变得不可见. ConfigurationManager.ConnectionStrings["AtlasMirrorConnectionString"]成为空引用并相应地抛出.

如何在测试中包含我的配置文件?现在,我能够测试的唯一行为是丢失配置文件的处理,这不是非常有用.

c# wcf web-config vs-unit-testing-framework

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

用于生成共享相同闭包变量的匿名委托的C#技术

我有一种情况需要生成一些类似的匿名代表.这是一个例子:

public void Foo(AnotherType theObj)
{
    var shared = (SomeType)null;

    theObj.LoadThing += () =>
    {
        if(shared == null)
            shared = LoadShared();

        return shared.Thing;
    };

    theObj.LoadOtherThing += () =>
    {
        if(shared == null)
            shared = LoadShared();

        return shared.OtherThing;
    };

    // more event handlers here...
}
Run Code Online (Sandbox Code Playgroud)

我遇到的麻烦是我的代码不是很干.每个事件处理程序的内容非常相似,可以很容易地参数化为工厂方法.阻止我这样做的唯一因素是每个委托需要共享对shared变量的引用.我无法shared使用ref关键字传递给工厂方法,因为您无法围绕ref变量创建闭包.有任何想法吗?

c# lambda anonymous-methods

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

SVGSVGElement.children不在IE11中工作?

我在这里有一个非常简单的jsfiddle:

http://jsfiddle.net/9uS3u/

它由这个html组成:

<svg></svg>
Run Code Online (Sandbox Code Playgroud)

这个javascript:

alert(document.getElementsByTagName("svg")[0].children);
Run Code Online (Sandbox Code Playgroud)

我希望它能提醒像"[Object HtmlCollection]"这样的东西.但在IE 11中,它给出了"未定义".尽管互联网声称IE 11确实支持svg children,SVGSVGElement但似乎该属性尚未定义.是什么赋予了?

svg dom internet-explorer-11

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

在.net核心项目中获取DefinitelyTyped打字稿定义文件的"正确"方法是什么?

在asp.net for .net框架下,我曾经使用nuget导入typescript类型定义第三方库.(*.d.ts)这些包来自DefinitelyTyped.我理解在.net核心的新世界中,nuget不再用于非.NET程序集.

那么有什么方法可以将打字稿定义纳入mvc项目吗?现在,我要去github仓库,并使用网络浏览器手动下载我需要的那些.有是一个更好的办法.

typescript definitelytyped visual-studio-2015 asp.net-core

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

C#8:切换引用表达式

我不知道如何使switch表达式产生一个ref值。

bool cond = true;
int a = 1, b = 2;

// This works
ref int c = ref cond ? ref a : ref b;

// But using a switch expression fails to compile.
// Error CS1525 Invalid expression term 'ref'
c = ref (cond switch { true => ref a, false => ref b });
Run Code Online (Sandbox Code Playgroud)

我的语法有误吗?这有可能吗?

无论是否包含外部,它都不会编译ref ( )。我bool只是为了快速说明问题而使用,但是我的实际用例并不是那么简单。

c# ref c#-8.0 switch-expression

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

我怎样才能完成ThreadPool.Join?

我正在写一个使用的Windows服务ThreadPool.QueueUserWorkItem().每个线程都是一个短暂的任务.

当服务停止时,我需要确保当前正在执行的所有线程都完成.有没有办法等待队列自行清除?

multithreading windows-services .net-3.5 threadpool

5
推荐指数
1
解决办法
3666
查看次数