auto abc = 5566;
Run Code Online (Sandbox Code Playgroud)
据我所知,编译器知道abc是int在编译时,所以它不会影响运行时性能.
但是,它是否会使编译时间更长?
提前致谢.
我在用C#编写的项目中跟踪遗留代码.
我找到以下代码:
public class FooCollection : Collection<IFoo> {};
Run Code Online (Sandbox Code Playgroud)
我不明白为什么(以及何时)我们需要像这样创建我们自己的Collection类.
为什么不直接使用内置的集合(array,List<T>,Dictionary<K,V>,...)
什么是数据结构Collection<T>?阵列?或链表?
我正在学习命令设计模式.据我所知,总是与命令模式相关的四个术语是命令,接收器,调用者和客户端.
具体的命令类有一个execute()方法,调用者有几个命令.调用者决定何时调用execute()命令的方法.
当execute()方法被调用时,它会调用接收器的方法.然后,接收器完成工作.
我不明白为什么我们需要接收器类?我们可以在内部工作execute(),似乎接收器类是多余的.
预先感谢.
我正在学习C++ 11中的"decltype".
"auto"和"decltype"的功能似乎重复,我不明白为什么我们需要"decltype".
根据维基,其主要用途是在通用编程中,通常很难甚至不可能表达依赖于模板参数的类型.
在通用编程中,当难以表达类型时,我可以使用"auto":
template <typename T>
void MakeAnObject (const T& builder)
{
auto val = builder.MakeObject();
// do stuff with val
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么需要"decltype".
"decltype"可以做"自动"不能做的事情吗?
提前致谢.
在编写编程语言时,Extract方法是一种常见的重构模式.
当我尝试对我的存储过程进行一些重构时,我想知道在编写存储过程(SP)/用户定义函数(UDF)时使用extract方法是否也是一个好习惯,因为我们可以调用其他SP/UDF一个SP/UDF?
它会影响性能吗?
提前致谢.
我有2个表tb_player1和tb_player2.
CREATE TABLE tb_player1
(
pk_id INT PRIMARY KEY IDENTITY (1,1) NOT NULL,
first_name CHAR(16),
last_name CHAR(16),
age INT
)
CREATE NONCLUSTERED INDEX ix_nonclustered_name ON tb_player1(first_name, last_name)
CREATE TABLE tb_player2
(
pk_id INT PRIMARY KEY IDENTITY (1,1) NOT NULL,
first_name CHAR(16),
last_name CHAR(16),
age INT
)
CREATE NONCLUSTERED INDEX ix_nonclustered_name ON tb_player2(first_name)
INCLUDE (last_name)
Run Code Online (Sandbox Code Playgroud)
在tb_player1有复合指数和tb_player2具有包括柱(覆盖索引).
我请对下面的SQL语句tb_player1和tb_player2,但实际的执行计划tb_player1和tb_player2是相同的.
INSERT INTO tb_player1 VALUES('kenny', 'lee', 29)
INSERT INTO …Run Code Online (Sandbox Code Playgroud) 根据这篇文章,使用Exception类的Message字段不是一个好的编程习惯.
但是,当我尝试ArgumentException在我的项目中抛出异常(例如)时,如何添加自定义异常信息?我应该使用Exception.Data房产吗?
而不是使用:
throw new ArgumentException("My Custom Info.");
Run Code Online (Sandbox Code Playgroud)
我应该使用:
ArgumentException ex = new ArgumentException();
ex.Data["CustomInfo"] = "My Custom Info.";
throw ex;
Run Code Online (Sandbox Code Playgroud)
如果我不使用Message字段,代码会变得很麻烦.
不使用Exception类的Message字段是一种好习惯吗?
提前致谢.
我是T-SQL的新手.据我所知,SELECT*被认为是一种不好的做法,所以我总是避免在我的代码中使用SELECT*.
但是,我的同事告诉我,使用SELECT*可以进行存在检查.例如,
IF EXISTS (SELECT * FROM tb_test WHERE ResourceType = 2)
BEGIN
--do something
END
Run Code Online (Sandbox Code Playgroud)
"因为MSSQL Server知道该语句正在进行存在检查,所以优化器会做正确的事情." 他说.
当我使用SELECT*进行存在检查时,是否没有性能开销?
提前致谢.
c# ×2
c++ ×2
c++11 ×2
performance ×2
sql ×2
sql-server ×2
t-sql ×2
auto ×1
collections ×1
database ×1
decltype ×1
exception ×1
indexing ×1
oop ×1