创建StringBuilder
类的成员并在要进行字符串连接时在类方法中使用它是否有效(或必要?)?
或者只是StringBuidler()
在此类操作之前使用 new ?
我怀疑如果那里有StringBuilder
准备使用它是有效的。
邢
TryGetValue 是否更改输入参数?
当使用 TryGetValue 时,我倾向于这样做:
Dictionary<int, long> myDic;
long lValue = -1;
long lTemp1;
if( myDic.TryGetValue(100, out lTemp1)){
lValue = lTemp1;
}
Run Code Online (Sandbox Code Playgroud)
我应该直接这样写吗?
myDic.TryGetValue(nKeyToLookup, out lValue);
Run Code Online (Sandbox Code Playgroud) 我想知道这种切换用例是否合适,还是有其他替代方案(模式)?
以下是我的计划的一部分:
基础是我正在做一系列的行动
程序控制一般是按照案例的顺序逐个进行;
通常任何特定情况都没有在第一次调用中完成,我们必须等到procX return
s true
.(等待文书回应或行动完成);
可以跳转到特定case
的(StepCurrent
在采样代码中更改).
我发现这种switch
- case
很难维护,特别是通过改变StepCurrent
直接控制流程.代码看起来很难看.
有没有更好的方法?
注意:虽然我使用的是C#,但问题可能不仅限于此.
while (true)
{
if (sig_IsExit())
{
break;
}
Thread.Sleep(500);
bRetSts = false;
switch (StepCurrent) // nSeq)
{
case 0:
bRetSts = proc0();
break;
case 1:
bRetSts = proc1();
break;
case 2:
bRetSts = proc2();
break;
case 3:
bRetSts = proc3();
break;
case 4:
...
}
if( bRetSts )
StepCurrent++;
}
Run Code Online (Sandbox Code Playgroud) 我想知道,如果尝试更新线程使用的布尔值,则保证成功,没有任何锁定保护.
类似下面的情况:当threadproc正在运行时,Stop()更改m_ThreadActive的布尔成员不会有任何问题吗?
private bool m_ThreadActive = true;
public void threadproc
{
while (m_ThreadActive)
{
...
}
}
public void Stop()
{
m_ThreadActive = false;
}
Run Code Online (Sandbox Code Playgroud)