Tag: C#的

非相交线段,同时最小化累积长度

我想find一个更好的algorithm来解决以下问题: 2D中有N个起点(紫色)和N个目标点(绿色)。 我想要一个algorithm,通过一个线段(棕色)连接起点到目标点,而没有任何这些线段相交(红色),同时最小化所有线段的累积长度。 我在C ++中的第一次努力是排列所有可能的状态,find无交叉状态,并且在那些最小总长度为O(n!)的状态中 。 但我认为还有更好的办法。 任何想法? 或者用于search的好关键字?

Quartz.NETconfiguration文件的文档在哪里?

在Quartz.NETconfiguration文件的语法上,我找不到任何文档。 我想了解一下 configuration服务本身 通过XML调度程序插件configuration作业。 我见过很多例子,但是我正在寻找一个明确的语法文档,向我展示了我所有的select。

dup2 / dup – 为什么我需要复制文件描述符?

我想了解使用dup2和dup 。 从手册页: DESCRIPTION dup and dup2 create a copy of the file descriptor oldfd. After successful return of dup or dup2, the old and new descriptors may be used interchangeably. They share locks, file position pointers and flags; for example, if the file position is modified by using lseek on one of the descriptors, […]

expression式树可能不包含使用可选参数的调用或调用

expression式树可能不包含使用可选参数的调用或调用 return this.RedirectToAction<MerchantController>(x => x.Edit(merchantId)); 编辑有一个可为空的参数。 为什么是这样?

如何string.Format处理空值?

在下面的代码中,为什么两个string.Format调用的行为不一样? 在第一个中,没有抛出exception,但是在第二个抛出了ArgumentNullException 。 static void Main(string[] args) { Exception e = null; string msgOne = string.Format("An exception occurred: {0}", e); string msgTwo = string.Format("Another exception occurred: {0}", null); } 有人能帮我理解两者的区别吗?

用于.NET的图表数据库

我一直在devise一个基于.NET / Mono框架的应用程序,它应该大量使用图论中的最短path ,我想使用本地解决scheme遍历图的节点,而不是实施难以维持的替代解决scheme,并将大量影响业绩。 我发现一个应用程序,这将是我的范围完美: neo4j 。 不幸的是,这个应用程序纯粹是用Java代码编写的,由于两个架构之间的巨大差异,它不能移植到.NET上。 有没有人知道是否有任何neo4j端口或类似的解决scheme的.NET?

垃圾收集器调用Dispose()吗?

我以为如果你的程序没有,那么GC会调用Dispose,但是你应该在你的程序中调用Dispose()来使清理变得确定。 但是,从我的小testing程序,我没有看到Dispose被调用…. public class Test : IDisposable { static void Main(string[] args) { Test s = new Test(); s = null; GC.Collect(); Console.ReadLine(); } public Test() { Console.WriteLine("Constructor"); } public void Dispose() { Console.WriteLine("Dispose"); } } //输出只是“构造函数”,我不会像我所期望的那样得到“Dispose”。 这是怎么回事? 编辑:是的,我知道我应该调用Dispose() – 我使用一次性对象时遵循标准模式。 我的问题出现了,因为我试图追踪一些代码中的泄漏,这是一个被pipe理的C ++(另一个复杂的层次,可能是另一个线程的主题)。

为什么有必要调用:这个()结构在c#中使用自动属性?

如果我使用这样的自动属性在C#中定义一个结构: public struct Address { public Address(string line1, string line2, string city, string state, string zip) { Line1 = line1; Line2 = line2; City = city; State = state; Zip = zip; } public string Line1 { get; protected set; } public string Line2 { get; protected set; } public string City { get; protected […]

这Valgrind警告是什么意思? – 警告设置地址范围烫发

当我运行我的程序对valgrind,我遇到了以下警告。 Warning: set address range perms: large range [0x4d59d040, 0x6159d040) (undefined) Warning: set address range perms: large range [0x194f7030, 0x2d4f7050) (noaccess) Warning: set address range perms: large range [0x3959d030, 0x6159d050) (noaccess) 经过一番search之后,我发现这是一个Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions ,这些信息没有告诉我多less。 我的程序确实在堆上分配了大量的内存。 (一堆realloc后可以达到2-3 GB的RAM) 然而,尽pipe没有任何分配失败,警告仍然出现。 所以,我想知道这个消息是什么意思? 我没有某种内存许可? (但分配成功)

C#中“直接”虚拟调用与接口调用的性能

这个基准似乎表明,直接在对象引用上调用一个虚拟方法比在对这个对象实现的接口的引用上调用它要快。 换一种说法: interface IFoo { void Bar(); } class Foo : IFoo { public virtual void Bar() {} } void Benchmark() { Foo f = new Foo(); IFoo f2 = f; f.Bar(); // This is faster. f2.Bar(); } 来自C ++的世界,我会期望这两个调用将被同样地实现(作为一个简单的虚拟表查找),并具有相同的性能。 C#如何实现虚拟调用,以及通过接口调用显然已完成的“额外”工作是什么? —编辑— OK,回答/评论我到目前为止意味着有一个通过接口的虚拟调用的双指针取消引用,而不是虚拟调用通过对象的一个​​取消引用。 那么请有人解释为什么这是必要的? C#中的虚拟表的结构是什么? 它是“平坦的”(就像C ++的典型)或不? 在C#语言devise中做出的devise折衷是什么导致了这一点? 我不是说这是一个“坏”的devise,我只是好奇为什么这是必要的。 简而言之,我想了解我的工具在引擎盖下的function,以便更有效地使用它。 如果我没有再得到“你不应该知道的”或“使用另一种语言”types的答案,我将不胜感激。 —编辑2 — 只是为了清楚说明,我们并没有在这里处理一些JIT优化编译器,它将删除dynamic分派:我修改了原始问题中提到的基准,以便在运行时随机实例化一个类或另一个类。 由于实例化是在编译之后和assembly加载/ […]