是否有可能在SQL(SQL Server)中从表中的标识列检索下一个ID(整数),而实际上没有插入行?如果最近的行被删除,则不一定是最高ID加1.
我问这个是因为我们偶尔需要用新行更新实时数据库.行的ID在我们的代码中使用(例如Switch(ID){Case ID:}并且必须相同.如果我们的开发DB和实时DB不同步,那么提前预测行ID会很不错在部署之前.
我当然可以设置IDENTITY OFF SET INSERT_IDENTITY ON或运行一个事务(这会回滚ID吗?)等但是想知道是否有一个函数返回了下一个ID(没有增加它).
当方法的形式参数是'object'类型时,通过继承,实际参数可以是任何对象类型.一旦进入方法,对象就可以转换为预期的类型.一切都很好.
但是,如果方法的签名具有'object'的形式参数,则使用ref关键字即methodname(ref object),编译器会抛出一个错误,指出:
"'ByRefTest.Program.changeMeByRef(ref object)'的最佳重载方法匹配'有一些无效的参数."Argument'1':无法从'ref ByRefTest.Person'转换为'ref object'"
在将对象作为参数传递时使用或不使用ref keword之间的区别在A. Friedman的博客http://crazorsharp.blogspot.com/2009/07/passing-objects-using-ref-keywordwait.html中有很好的解释,但是,当'object'类型的形式参数使用ref关键字时,为什么不能将自定义类型作为实际参数传递?
举个例子:
class Program
{
static void Main(string[] args)
{
Person p = new Person();
changeMe(p); // compiles
changeMeByRef(ref p); // throws error
object pObject = (object)p;
changeMeByRef(ref pObject); // compiles
}
public static void changeMeByRef(ref object obj)
{
Person p = (Person)obj;
}
public static void changeMe(object obj)
{
Person p = (Person)obj;
}
}
public class Person
{
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
ps我刚刚将签名更改为:
public static void changeMeByRef <T>(ref T …
在声明中使用多个赋值是否有任何优点或缺点?在简单的例子中
var1 = var2 = true;
这个分配是从右到左(我相信C#中的所有作业,可能是Java,虽然我还没有检查过后者).但是这样编码会产生什么影响(编译,执行或其他)?
干杯.