小编Pro*_*zzz的帖子

新的关键字和方法隐藏

新的关键字用于隐藏相同的基类实现.但我不确定为什么以下代码将输出生成为Baseclass

class Baseclass
{ 
    public void fun()
    { 
        Console.Write("Base class" + " ");
    } 
} 
class Derived1: Baseclass
{ 
    new void fun()
    {
        Console.Write("Derived1 class" + " "); 
    } 
} 
class Derived2: Derived1
{ 
    new void fun()
    { 
        Console.Write("Derived2 class" + " ");
    }
}
class Program
{ 
    public static void Main(string[ ] args)
    { 
        Derived2 d = new Derived2(); 
        d.fun(); 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

我们在derived2中隐藏了fun的实现但是仍然调用Base类为什么呢?我错过了什么吗?

c# inheritance

14
推荐指数
2
解决办法
2460
查看次数

SQLite 中的 SAVEPOINT 机制

我正在尝试了解 SQLite 中的保存点和事务。我在表/数据库上有以下命令,我正在使用保存点。

SAVEPOINT aaa;
RELEASE aaa;
BEGIN;
Run Code Online (Sandbox Code Playgroud)

现在,如果我一次执行上述所有语句,它会抛出一个错误,说A transaction cannot be started inside another transaction. 如果我一次运行一个,它工作正常。如果我运行前两个 Savepoint 和 release 命令并尝试通过执行Begin. 它再次抛出与以前相同的错误。

这里的链接说

如果 SAVEPOINT 命令在 SQLite 处于自动提交模式时(即在事务之外)发出,则将启动标准自动提交 BEGIN DEFERRED TRANSACTION。但是,与大多数命令不同,自动提交事务在 SAVEPOINT 命令返回后不会自动提交,使系统处于打开的事务中。自动事务将保持活动状态,直到原始保存点被释放,或者外部事务被显式提交或回滚。`

那么,Release Savepoint 命令之后是否一定需要 Commit 或 Rollback 命令呢?不release命令提交并允许我们使用BEGIN?

sqlite transactions savepoints

5
推荐指数
1
解决办法
2492
查看次数

在Windows的Git bash中错误0x2启动node.exe -v

我已经为Windows 2.7版安装了Gitbash,并在Windows 7 64位计算机上安装了nodejs 5.5。

当我尝试跑步时

 node -v
Run Code Online (Sandbox Code Playgroud)

我得到错误信息

Error 0x2 starting node.exe -v
Run Code Online (Sandbox Code Playgroud)

我不确定为什么会这样,我卸载并重新安装了node和git,重新启动了系统并检查了env变量。一切似乎都很好。我在“用户环境变量”中的PATH环境变量看起来像这样。

C:\Users\<userid>\.dnx\bin;C:\Users\<userid>\AppData\Roaming\npm ;C:\Users\<userid>\AppData\Roaming\npm
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?

windows git bash node.js

4
推荐指数
1
解决办法
3226
查看次数

环境变量名称如何反映 appsettings.json 的结构

我正在使用 ASP.NET Core 5.0,并且我有一个部署到内部云的 Web API 应用程序,其中几乎没有像数据库这样的设置是通过主机云上的环境变量来控制的。在我的 Startup.cs 中,我有以下代码

string projectDbConnection = Configuration.GetSection("ProjectDatabaseSettings").GetValue<string>("PROJECT_DB_CONNECTION");
string projectDbName = Configuration.GetSection("ProjectDatabaseSettings").GetValue<string>("PROJECT_DB_NAME");
Run Code Online (Sandbox Code Playgroud)

据我了解,当在 IIS Express 本地运行时,它会查找应用程序设置。<Environment>.json 并且它们优先于 appsettings.json 值。

但是当我部署到云时,这个应用程序总是连接到错误的数据库,其中我提到了PROJECT_DB_CONNECTION&PROJECT_DB_NAME作为应用程序的环境变量。为了使应用程序从环境变量中读取,我必须将 Startup.cs 中的上述代码更改为

string projectDbConnection = Configuration.GetValue<string>("PROJECT_DB_CONNECTION");
string projectDbName = Configuration.GetValue<string>("PROJECT_DB_NAME");
Run Code Online (Sandbox Code Playgroud)

我无法理解GetSection.GetValue和 just之间的区别GetValue 以及为什么我应该使用Configuration.GetValue()直接应用程序从环境变量中读取。

我缺少什么以及我们什么时候应该使用什么?

asp.net-core-5.0

2
推荐指数
1
解决办法
4855
查看次数