当作为可变参数传递时,是否有一种标准的方法来获得变量的类型大小?
auto x = ...;
auto y = sizeof(promoted(x));
Run Code Online (Sandbox Code Playgroud)
结果应该是:
char -> sizeof(int)
int -> sizeof(int)
float -> sizeof(double)
...
Run Code Online (Sandbox Code Playgroud) 编写这样的辅助方法是否安全?它会不会关闭连接?我想知道如果一切顺利,它会,但是即使它抛出,ExecuteReader也会关闭连接吗?
public static IEnumerable<DbDataRecord> ExecuteSelect(string commandText, DbConnection conn)
{
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = commandText;
conn.Open();
using (DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
foreach (DbDataRecord record in reader) { yield return record; }
}
}
}
Run Code Online (Sandbox Code Playgroud) 假设我有一个界面,如下所示:
public interface ILoggable
{
void Log(Func<string> message, Logger.Type type);
}
Run Code Online (Sandbox Code Playgroud)
还有一些扩展方法,如下所示:
public static class Logger
{
public static void Log(this ILoggable loggable, Func<string> message) { loggable.Log(message, Type.Information); }
public static void Log(this ILoggable loggable, string prefix, byte[] data, int len) { /* snip */ }
public static void Log(this ILoggable loggable, Exception ex) { /* snip */ }
// And so on...
}
Run Code Online (Sandbox Code Playgroud)
然后在任何class CoreService : ServiceBase, ILoggable或者这样的我实现它public void Log(Func<string> message, Logger.Type type)到我喜欢的任何东西(公共修饰符是meh ......)并使用所有扩展方法来进行实际记录.
到目前为止这么好......还是不太好?这种方法有问题吗?如果没有,那么为什么不方便: …
REP INSB假设我在普通优先级线程中从用户模式长时间读取 PCI 设备寄存器。在执行期间,以下哪些情况可以发生,哪些情况不能发生:
如果答案取决于它,则假设有一个相当现代的处理器。感兴趣的是 Atom 和 Core i3。
我有一个目录中每个构建生成的文件列表 C:\BuildArtifacts
目录的内容如下所示:
TestBuild-1.0.0.1.zip
TestBuild-1.0.0.2.zip
TestBuild-1.0.0.3.zip
TestBuild-1.0.0.4.zip
TestBuild-1.0.0.5.zip
TestBuild-1.0.0.6.zip
Run Code Online (Sandbox Code Playgroud)
现在,对于每个增量构建,我只想保留两个最近的工件并删除其余的工件.所以,在这个例子中,我想保留TestBuild-1.0.0.5.zip和TestBuild-1.0.0.6.zip
我怎么能用MSBuild做到这一点?
我设法在一个项目中获取上面的列表
<Exec WorkingDirectory="$(Artifacts)\.." Command="dir /B /A:-D /O:-N" Outputs="ArchiveFileList" />
Run Code Online (Sandbox Code Playgroud)