草庐IT

short-circuit-evaluation

全部标签

windows - Windows 批处理参数没有 "short"替换

我想遍历一个文件夹并检查其子文件夹中是否存在某些文件。其中一些子文件夹可能有大括号,所以我使用了批处理参数的短名称替换(参见call/?):@echoofffor/D%%Din(*.*)do(call:showFile"%%D\nbproject\project.properties")pausegoto:eof:showFileechoF:%1echoS:%~sdp1%~nx1goto:eof这种方法适用于我们的大多数系统(所有Windows7专业版)。在"new"笔记本电脑上,这将停止工作。“S:”行显示完整的“真实”路径,而不是短路径。由于文件夹名称中的额外大括号,原始批处理文件

c# - Windows 8 - WriteTextAsync 异常 "Cannot evaluate expression because a native frame is on top of the call stack."

我想使用StorageFile来实现读取和写入,如下所示http://msdn.microsoft.com/en-us/library/windows/apps/hh758325.aspx#writing_to_a_file与publicasyncvoidSave(){StorageFolderstorageFolder=KnownFolders.DocumentsLibrary;StorageFilesampleFile=awaitstorageFolder.CreateFileAsync(PlayerPrefs.GetString("WorldName")+"_"+filename

windows - 批处理脚本 : Why does this condition evaluate to true?

创建一个包含以下内容的批处理文件:@echooffsetlocalecho%1if[%1]==[]echohi然后像这样从命令提示符运行它:script.cmd==输出结果如下:ECHOisoff.hi这是为什么,它是如何发生的?另外,如何更可靠地检查批处理脚本中的空字符串?谢谢。 最佳答案 在这种情况下,我建议使用以下内容:@echooffsetlocalecho(%~1if"%~1"==""echohi而不是script.cmd==使用script.cmd"=="请注意,我使用了echo(,如果变量被视为空,它将回显一个换行符,

c# - 为什么 Microsoft.Build.Evaluation 在 64 位 PC 上将 $(ProgramFiles) 评估为 "c:\program files"?

我有一个C#项目文件(.csproj),其中包含对$(ProgramFiles)的引用。我使用的是64位Windows7。当我在VisualStudio2010中编译这个项目文件时,它会在c:\ProgramFiles(X86)中正确定位文件。如果我想变聪明,而是使用Microsoft.Build.Evaluation.ProjectCollection.LoadProject([projectfile]),试图在代码中构建它,它会评估$(ProgramFiles)错误地作为c:\ProgramFiles。知道问题的原因是什么吗? 最佳答案

java - 有没有办法在 Java 中生成文件名的 8.3 或 'short' (Windows) 版本?

在我们的应用程序中,我们允许用户打开文件和目录。Java6为我们提供了...java.awt.Desktop.getDesktop().open(file);效果很好。不过由于需要保证Java5的兼容性,我们也实现了在cmd.exe中调用start命令打开文件的方法...Stringcommand="cmd.exestart...";Runtime.getRuntime().exec(command);这就是问题所在。start命令似乎只能处理8.3文件名,这意味着任何非短(8.3)文件/目录名都会导致start命令失败。有没有一种简单的方法可以生成这些短名称?或者任何其他解决方法?

c# - CodeContracts : Boolean condition evaluates to a constant value, 为什么?

我收到此警告但无法找出问题...CodeContracts:warning:TheBooleanconditiond1.Count!=d2.Countalwaysevaluatestoaconstantvalue.Ifit(oritsnegation)appearinthesourcecode,youmayhavesomedeadcodeorredundantcheck代码如下:publicstaticboolDictionaryEquals(IDictionaryd1,IDictionaryd2){if(d1==d2)returntrue;if(d1==null||d2==null)

c# - 在 C# 中从 short 转换为 byte 时会发生什么?

我有以下代码:shortmyShort=23948;bytemyByte=(byte)myShort;现在我没想到myByte包含值23948。我猜它会包含255(我相信一个字节的最大值)。然而,它包含140,这让我想知道为什么;幕后究竟发生了什么?请注意,我不是在找人来解决23948不能放入一个字节的问题,我只是想知道底层实现 最佳答案 Short是一种2字节类型,一个字节就是一个字节。当您从两个字节转换为一个字节时,您将迫使系统进行调整,并且原始字节之一(最重要的字节)被丢弃并且数据丢失。23948(二进制:0101110110

c# - 将 sbyte[] 转换为 bool[] 并将 char[] 转换为 short[]

有没有显式转换/强制转换sbyte[]或byte[]到bool[]char[]到short[]/ushort[]在CIL中,您经常会看到诸如stelemTypesbyte(ldlocpArray)ldc_i41ldc_i40正在执行pArray[1]=true,其中pArray是bool[]类型的一维数组。我想通过做在c#中复制它(sbyte[])pArray[1]=1;不幸的是,C#编译器不允许这样做。 最佳答案 未记录的技巧,风险自负:(例如here以及许多其他地方)[StructLayout(LayoutKind.Explic

c# - 错误 : Unable to evaluate expression because the code is optimized

我在我的asp.net应用程序中收到一个错误“无法评估表达式,因为代码已优化或native框架位于调用堆栈的顶部。”protectedvoidbtnCustomerProfile_Click(objectsender,EventArgse){try{Server.Transfer("CustomerProfile.aspx");}catch(Exceptionex){Response.Write(ex.ToString());}finally{}}搜索SO后,看到类似的帖子大多涉及response.redirect。我的代码使用的是server.transfer,我的应用程序也使用母版

c# - nest yields to return IEnumerable<IEnumerable<T>> with lazy evaluation

我写了一个LINQ扩展方法SplitBetween类似于String.Split.>newList(){3,4,2,21,3,2,17,16,1}>.SplitBetween(x=>x>=10)[3,4,2],[3,2],[],[1]来源://partitionsequenceintosequenceofcontiguoussubsequences//behaveslikeString.SplitpublicstaticIEnumerable>SplitBetween(thisIEnumerablesource,FuncseparatorSelector,boolincludeSepa