我注意到在OSX上,安装经常拖放一个文件有点交易.我假设该文件是所有应用程序必需位的存档,并且应用程序直接从它运行.应用程序存储配置数据的位置,特别是当有多个用户时,每个用户设置?在Windows上,这种类型的东西可能会在HKLU或HKLM下的注册表中,或者在用户或所有用户的Application Data文件夹中.
调查一个bug,我发现这是由于c#中的这种奇怪:
sbyte[] foo = new sbyte[10];
object bar = foo;
Console.WriteLine("{0} {1} {2} {3}",
foo is sbyte[], foo is byte[], bar is sbyte[], bar is byte[]);
Run Code Online (Sandbox Code Playgroud)
输出为"True False True True",而我希望" bar is byte[]"返回False.显然酒吧既是一个byte[]又是一个sbyte[]?同样的情况对于其他符号/无符号类型,如Int32[]VS UInt32[],但不是说Int32[]VS Int64[].
谁能解释这种行为?这是在.NET 3.5中.
我想测试一个正则表达式是否匹配特定索引处的字符串的一部分(并且仅从该特定索引开始).例如,给定字符串"one two 3 4 five",我想知道,在索引8处,正则表达式[0-9] +将匹配"3".RegularExpression.IsMatch和Match都采用起始索引,但是如果需要,它们都将搜索字符串的其余部分以进行匹配.
string text="one two 3 4 five";
Regex num=new Regex("[0-9]+");
//unfortunately num.IsMatch(text,0) also finds a match and returns true
Console.WriteLine("{0} {1}",num.IsMatch(text, 8),num.IsMatch(text,0));
Run Code Online (Sandbox Code Playgroud)
显然,我可以检查结果匹配是否从我感兴趣的索引开始,但是我会在大字符串上执行此操作很多次,所以我不想浪费时间在字符串中搜索匹配项.另外,我不会事先知道我将实际测试字符串的正则表达式.
我不想:
我想使用任意用户提供的语法解析潜在的大型用户提供的文本正文.语法将以BNF或类似PEG的语法定义,终端将是字符串文字或正则表达式.因此,我需要检查字符串的下一部分是否与语法驱动的任何潜在终端匹配.