我在Perl之后认识了PHP,所以当我第一次找到preg_*函数时,我基本上只使用了那些.后来我读到str_replace()在处理文字文本时更快.所以我的问题是,不能preg_replace()像str_replace()搜索模式不使用特殊字符那样有效吗?也许只是分析模式,在正则表达式和纯文本算法之间进行选择?
如果我使用delete p而不是delete [] p作为数组,结果是什么?我遇到了这个问题的两个答案.
1只释放第一个元素.
2遇到灾难性的结局.
我的问题是,这两个怎么会发生?如果只释放第一个元素,为什么会有灾难?任何人都可以举个例子吗?
在开发我的应用程序时,我遇到了一些比较的东西,它是:
string str = "12345";
int j = 12345;
if (str == j.ToString())
{
//do my logic
}
Run Code Online (Sandbox Code Playgroud)
我以为上面的东西也可以用:
string str = "12345";
int j = 12345;
if (Convert.ToInt32(str) == j)
{
//do my logic
}
Run Code Online (Sandbox Code Playgroud)
所以我开发了一个示例代码来测试性能,哪个更好
var iterationCount = 1000000;
var watch = new Stopwatch();
watch.Start();
string str = "12345";
int j = 12345;
for (var i = 0; i < iterationCount; i++)
{
if (str == j.ToString())
{
//do my logic
}
}
watch.Stop();
Run Code Online (Sandbox Code Playgroud)
第二个:
var iterationCount = …Run Code Online (Sandbox Code Playgroud) 所以,作为一个有趣的项目,我决定编写自己的XML解析器.不,不解析特定文档,不,不使用XML解析器库.我的意思是编写代码以将任何XML文档解析为可用的数据结构.只是因为我喜欢挑战.:-)
据说,到目前为止它被证明是有趣的.它最初看起来并不容易解析(特别是当你开始考虑特殊字符,CDATA,空标签,评论等)时.
在任何人都知道的地方是否有任何记录良好的XML解析算法或解释?看起来有各种各样的Queue和Stack以及BTree等等实现,但我不确定我是否曾经见过一个简单,记录良好的XML解析器算法......
我再说一遍:我不是在寻找一个预先构建的解析器库!我正在寻找有关如何创建自己的预构建解析器库的信息!不要告诉我"使用expat"或"使用SAX"或其他什么.那不是我要求的.
我目前正在编写一个小C#库来简化实现很少的物理模拟/实验.
主要组件是在SimulationForm内部运行定时器循环并从用户隐藏样板代码.实验本身将通过三种方法定义:
Init() (初始化一切)Render(Graphics g) (渲染当前模拟状态)Move(double dt)(移动实验dt几秒钟)我只是想知道让用户实现这些功能的更好选择是什么:
1)由继承表单覆盖的虚拟方法
protected virtual void Init() {}
...
Run Code Online (Sandbox Code Playgroud)
要么
2)事件
public event EventHandler<MoveSimulationEventArgs> Move = ...
...
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,方法不应该是抽象的.其实,还有更和他们都不具有实施.由于许多模拟不需要它们,因此将它们放在外面通常很方便.
关于这是一个"正常形式"的酷事是你可以写
partial class frmMyExperiment : SimulationForm {
}
Run Code Online (Sandbox Code Playgroud)
并且您完全能够与设计器和所有继承的控件和设置/属性进行交互.我不想通过采用完全不同的方法来失去这些功能.
我在C#中的检查列表框中显示对象时遇到问题.我可以添加对象,但是当对象显示给用户时,程序会将复选框选择输出为Salesform.order,而不是像我想要的那样在订单类中调用tostring方法.这导致多个订单显示为相同的东西:"Salesform.order".
orderCheckList.Items.Add(orderUp);
Run Code Online (Sandbox Code Playgroud)
(这里,orderUp是一个带有客户名称等字段的订单)
有人可以帮忙吗?我知道有一个简单的解决方案,我忽略了.
我正在尝试运行Powershell命令来调用7-Zip以使用以下命令压缩文件夹:
$command = $SevenZip + " a " + $targetDirForZip + $GetDateName + "_" + $dir.Name + ".7z " + $dir.FullName
Invoke-Expression $command
Run Code Online (Sandbox Code Playgroud)
已经设置了输入$ command的变量,$ SevenZip是"c:\ Program Files\7-Zip\7z.exe"
这不起作用,我正试图找出从Powershell调用7-Zip的最佳方法.想法?
为了便于讨论,请考虑 Access 中的这个基本表(测试)...
ID division name role
1 1 Frank 100
2 2 David 101
3 3 John 101
4 2 Mike 102
5 2 Rob 102
7 3 Dave 102
8 3 Greg 102
Run Code Online (Sandbox Code Playgroud)
我想统计一个部门中某个角色的用户。如果我执行一个简单的 count(),我会返回正确的 0:
SELECT COUNT(ID) as ct
FROM Test
WHERE role >=101 and division=1;
Run Code Online (Sandbox Code Playgroud)
产量
division ct
1 0
Run Code Online (Sandbox Code Playgroud)
但是,我想在结果中包含除法编号(为了进一步加入、报告等),并且它总是返回空/无行,而不是除法和计数 0:
SELECT division, COUNT(ID) as ct
FROM Test WHERE role >=101
GROUP BY division
HAVING division=1;
Run Code Online (Sandbox Code Playgroud)
或者
SELECT division, COUNT(ID) as ct
FROM Test
WHERE …Run Code Online (Sandbox Code Playgroud) 假设我想检查一堆对象以确保none为null:
if (obj != null &&
obj.Parameters != null &&
obj.Parameters.UserSettings != null) {
// do something with obj.Parameters.UserSettings
}
Run Code Online (Sandbox Code Playgroud)
编写一个辅助函数来接受可变数量的参数并简化这种检查是一个诱人的前景:
static bool NoNulls(params object[] objects) {
for (int i = 0; i < objects.Length; i++)
if (objects[i] == null) return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
然后上面的代码可能变成:
if (NoNulls(obj, obj.Parameters, obj.Parameters.UserSettings)) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
对?错误.如果obj是空的话,我会得到一个NullReferenceException,当我试图通过obj.Parameters对NoNulls.
所以上述方法显然是错误的.但是if使用&&运算符的声明工作得很好,因为它是短路的.那么:有没有办法让方法短路,以便在方法中明确引用之前不会对其参数进行求值?