有没有办法foreach
在C#中对并行枚举进行样式迭代?对于标化的名单,我知道一个可以使用正for
循环遍历指数范围内的int,但我真的很喜欢foreach
到for
了许多的原因.
如果它在C#2.0中有效,则可获得奖励积分
在下面的程序中,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) (我正在使用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) 我正在试图找出设计几个类的最佳方法.我对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"似乎有点多余.我这样做了吗?
我是单元测试的新手,所以我可能误解了一些大的东西,但我被要求为我的WCF服务创建一些单元测试.这是一个非常简单的服务,它执行存储过程并返回结果.我操作的第二行是这样的:
string conn = ConfigurationManager
.ConnectionStrings["AtlasMirrorConnectionString"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)
部署服务时一切正常,但在单元测试下,配置文件似乎变得不可见. ConfigurationManager.ConnectionStrings["AtlasMirrorConnectionString"]
成为空引用并相应地抛出.
如何在测试中包含我的配置文件?现在,我能够测试的唯一行为是丢失配置文件的处理,这不是非常有用.
我有一种情况需要生成一些类似的匿名代表.这是一个例子:
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
变量创建闭包.有任何想法吗?
我在这里有一个非常简单的jsfiddle:
它由这个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
但似乎该属性尚未定义.是什么赋予了?
在asp.net for .net框架下,我曾经使用nuget导入typescript类型定义第三方库.(*.d.ts
)这些包来自DefinitelyTyped.我理解在.net核心的新世界中,nuget不再用于非.NET程序集.
那么有什么方法可以将打字稿定义纳入mvc项目吗?现在,我要去github仓库,并使用网络浏览器手动下载我需要的那些.有有是一个更好的办法.
我不知道如何使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
只是为了快速说明问题而使用,但是我的实际用例并不是那么简单。
我正在写一个使用的Windows服务ThreadPool.QueueUserWorkItem()
.每个线程都是一个短暂的任务.
当服务停止时,我需要确保当前正在执行的所有线程都完成.有没有办法等待队列自行清除?