小编Jer*_*vel的帖子

执行n ++后的奇怪答案

执行以下代码片段后,为什么int d 25而不是26的值?

int n = 20;
int d = n++ + 5;

Console.WriteLine(d);
Run Code Online (Sandbox Code Playgroud)

c#

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

自由格式文本再次在数据库中找到

我的任务是将自由格式文本与数据库中的数据进行匹配.我的意思是自由形式,它是一个文本框,有人可以输入任何东西.在大多数情况下,这些条目是有效的.我想从一个类似于输入内容的表中找到一个值列表.在你问之前,我无法控制所述文本框,也无法控制输入它的人.我在寻找技术,而不是特定的技术.

我尝试过的事情:

  • 清除标准和列表中的常用词.即(the,of,in等)
  • 在sql中的SOUNDEX函数,它非常弱,并且不太有帮助.
  • Levenshtein距离算法和我对结果非常满意,但它仍然需要大量的抛光.

例如,我有这个列表:

  • 霍比特人:意外旅程
  • 霍比特人2:史矛革之战
  • 霍比特人:又回来了
  • 钢铁侠3
  • 卑鄙的我2
  • 速度与激情6
  • 怪兽大学
  • 饥饿游戏:星火燎原
  • 钢铁之躯
  • 重力
  • 雷神:黑暗世界
  • 疯狂原始人
  • 第二次世界大战

用户输入可以是:

  • hobit意外的journ
    • "hobit"这个词拼写不正确
    • 预期结果:
      • 霍比特人:意外旅程
      • 霍比特人:又回来了
      • 霍比特人2:史矛革之战
  • 饥饿游戏
    • 预期结果:
      • 饥饿游戏:星火燎原

我想我想问的是我可以使用其他方法来计算这些结果.我的堆栈是.Net 4.0和MSSQL 2008 R2

c# t-sql sql-server algorithm

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

打印的PDF文件与原始PDF文件不同

我使用PDFBox 1.8.3 jar在打印机(HW)中打印PDF文件.我以正常和程序两种方式打印PDF文件.当我使用常规方式打印PDF时,我将原始pdf文件作为打印文档.但是当我使用我的代码时,我无法将原始的pdf文件作为打印输出.我可以在打印文件中看到一些变化; 例如,对齐,字体和墨水与原始文档不同.

ReadPDF readPDF = new ReadPDF();
PDDocument document = readPDF.loadPdf(path);
document.addPage(new PDPage());
printerJob.setPageable(document);
printRequestAttributeSet.add(new PageRanges(1,3));
printerJob.print(printRequestAttributeSet);
Run Code Online (Sandbox Code Playgroud)

此外,我尝试将PDFBox jar 1.8.3升级为即将推出的jar 2.0.0.我遇到了一些困难(例如:在PDFBox 2.0.0中我无法使用printerJob.setPageable(document);).你能帮我解决这个问题吗?

java pdfbox

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

为什么我不能将string.Empty用作与空引号相反的可选参数?

我正在改进我的代码并注意到在某些地方我有可选参数,其默认值为空字符串.我将其更改为类中的默认值为空字符串,猜猜是什么!显然,空引号和string.Empty.之间存在差异.什么鸭子?!(打字错误)

private void Khaboom(String parameter = "") { ... }

private void Bazinga(String parameter = String.Empty) { ... }
Run Code Online (Sandbox Code Playgroud)

谁能向我解释为什么不鸭Khaboom工作,同时Bazinga不?

错误消息引发了这样的错误:

'parameter'的默认参数值必须是编译时常量.

嗯...... 是的!

c# optional-parameters

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

格式化方法签名会丢失缩进

我正在创建一个代码修复程序,它会转换检测到的方法的访问修饰符public.实现很简单:删除所有现有的访问修饰符并public在前面添加.然后我替换节点并返回解决方案.

但是这会产生一个如下所示的修饰符列表:publicvirtual void Method().在粘贴彼此的修改器之上,该行代码被错误地缩进.它看起来像这样:

        [TestClass]
        public class MyClass
        {
            [TestMethod]
publicvirtual void Method()
            {

            }
        }
Run Code Online (Sandbox Code Playgroud)

因此,作为解决方案,我会格式化代码.运用

var formattedMethod = Formatter.Format(newMethod, 
                                       newMethod.Modifiers.Span,
                                       document.Project.Solution.Workspace,
                                       document.Project.Solution.Workspace.Options);
Run Code Online (Sandbox Code Playgroud)

我可以格式化修饰符,但它们仍然错误地缩进:

        [TestClass]
        public class MyClass
        {
            [TestMethod]
public virtual void Method()
            {

            }
        }
Run Code Online (Sandbox Code Playgroud)

我认为这是因为琐事,但是使用原始方法的主要琐事预先设置格式化的方法并没有什么不同.我想避免格式化整个文档,因为这不是格式化整个文档的操作.

本代码修复的完整相关实现:

private Task<Solution> MakePublicAsync(Document document, SyntaxNode root, MethodDeclarationSyntax method)
{
    var removableModifiers = new[]
    {
        SyntaxFactory.Token(SyntaxKind.InternalKeyword),
        SyntaxFactory.Token(SyntaxKind.ProtectedKeyword),
        SyntaxFactory.Token(SyntaxKind.PrivateKeyword)
    };

    var modifierList = new SyntaxTokenList()
                            .Add(SyntaxFactory.Token(SyntaxKind.PublicKeyword))
                            .AddRange(method.Modifiers.Where(x => !removableModifiers.Select(y => y.RawKind).Contains(x.RawKind)));

    var newMethod = method.WithModifiers(modifierList);
    var …
Run Code Online (Sandbox Code Playgroud)

c# roslyn

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

如何在具有多个协作者的环境中使用本地化的PostBuildEvent?

我有一个项目有以下内容PostBuildEvent:

<PostBuildEvent>
 if exist Diagnostic.nuspec 
 if exist "$(SolutionDir)\packages\NuGet.CommandLine.2.8.2\tools\NuGet.exe"
 "$(SolutionDir)\packages\NuGet.CommandLine.2.8.2\tools\NuGet.exe" 
 pack Diagnostic.nuspec 
 -OutputDirectory "C:\Users\jeroen\Google Drive\NugetLocal\VSDiagnostics"
</PostBuildEvent>
Run Code Online (Sandbox Code Playgroud)

在这里,OutPutDirectory显然是我自己的安装本地.默认值为..

此配置存储在项目的.csproj文件中,该文件还跟踪诸如对其他程序集的引用和项目中的文件之类的内容.

出于这个原因,我不能简单地忽略git中的文件,或者我的其他任何更改都.csproj不会通过.

有没有什么方法可以保持我的本地化PostBuildEvent而不将其强加给其他合作者?

git msbuild visual-studio visual-studio-2015

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

如果一个类正在使用接口,那么它必须

如果一个类正在使用接口,它必须:

  • (1)继承接口的属性

  • (2)包含与接口相同的方法

  • (3)创建一个接口对象

  • (4)以上所有

正确的答案是(4)以上所有.

注意:这来自这里,我不知道究竟谁是这个问题的作者.

我同意(1)st和(2)nd,但我会争论(3)rd的措辞.

我想它可以被双重解释;

创建接口对象可能只是一个继承接口的类的实例

要么

接口类型的引用变量


解释上述内容的正确方法是什么?

下面有意义吗?

如果一个类正在使用接口,它必须:

  • (1)继承接口的属性

  • (2)为接口公开的所有方法提供实现

  • (3)???

  • (4)以上所有

c# inheritance interface class

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

如何覆盖==运算符

如何==为我的类的实例定义运算符?我试过这样的:

public bool operator == (Vector anotherVector)
{
    return this.CompareTo(anotherVector) == 1 ;              
}
Run Code Online (Sandbox Code Playgroud)

但它说:

可以超载的一元运算符

c# operator-overloading operators

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

在Spreadsheetlight中选择范围

有没有人知道是否可以选择范围,或者可能是SLcellSpreadsheetlight中的列表?我的目标是做一个foreach循环.目前我正在使用嵌套for循环.

foreach(SLCell cell in myRange)
{
}
Run Code Online (Sandbox Code Playgroud)

Interop将是:

Excel.Range myRange= sheet.get_Range("A1", "B4");

Excel.Range myRange= sheet.get_Range(Cells(1,1), Cells(4,2));
Run Code Online (Sandbox Code Playgroud)

c# excel

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

LevelDB 的默认比较器

通过 JNI 从 Java使用 LevelDB 。

我想提供一个数字(整数)键,并且能够按照该键的顺序迭代数据库。我遇到困难的地方是理解 LevelDb 的默认比较器实际上是如何工作的,以及如何将 int 编码为 a byte[],以使默认比较器按该值正确排序int

LevelDb 文档指出:

前面的示例使用了 key 的默认排序函数,该函数按字典顺序对字节进行排序。

我已经用谷歌搜索过,但对如何将 an 实际编码int为按字典顺序排列的字节感到困惑?

注意:如果我提供自己的比较器,迭代时间大约会增加一倍,因为现在所有比较都必须在 JNI 边界上来回跳转,所以我不想这样做。

c++ java bit-manipulation leveldb

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