相关疑难解决方法(0)

Action(arg)和Action.Invoke(arg)之间的区别

static void Main()
{
    Action<string> myAction = SomeMethod;

    myAction("Hello World");
    myAction.Invoke("Hello World");
}

static void SomeMethod(string someString)
{
    Console.WriteLine(someString);
}
Run Code Online (Sandbox Code Playgroud)

上面的输出是:

Hello World
Hello World
Run Code Online (Sandbox Code Playgroud)

现在我的问题是

  • 如果有的话,调用Action的两种方法有什么区别?

  • 这个比那个好吗?

  • 何时使用哪个?

谢谢

c#

27
推荐指数
1
解决办法
4794
查看次数

Shell函数是否在子shell中运行

我试图解决一个问题,在我看来,你无法将开放的db2连接传递给子shell.

我的代码组织如下:

驱动程序脚本(中my_driver.sh)

# foo.sh defines baz() bar(), which use a db2 connection
# Also the "$param_file" is set in foo.sh!
source foo.sh

db2 "connect to $dbName USER $dbUser using $dbPass"

function doit
{
    cat $param_file | while read params
    do
        baz $params
        bar $params
    done
}

doit
Run Code Online (Sandbox Code Playgroud)

我简化了我的代码,但上面的内容已经足够了.我从上面开始:

my_driver.sh
Run Code Online (Sandbox Code Playgroud)

现在,我真正的问题是子shell中没有db2连接:

我累了:

. my_driver.sh
Run Code Online (Sandbox Code Playgroud)

没有帮助

如果我从命令行手动执行:

source foo.sh
Run Code Online (Sandbox Code Playgroud)

$params手动设置:

baz $params
bar $params
Run Code Online (Sandbox Code Playgroud)

然后它确实有效!如此看来,doit还是别的什么行为,如果barbaz从子shell执行.

如果我能以某种方式弄清楚如何将db2 open连接传递给subshel​​l,那我会很高兴.

否则,这些shell函数在我看来它们在子shell中运行.有办法吗?

bash subshell

7
推荐指数
1
解决办法
4362
查看次数

是否常规地说调用函数并调用方法?

我正在阅读Think Python:如何像计算机科学家一样思考.笔者使用"援引"与方法和"呼"与功能.

这是一个惯例吗?如果是这样,为什么要做出这种区分呢?为什么称函数被调用,但据说可以调用方法

python oop methods function python-3.x

6
推荐指数
1
解决办法
94
查看次数

标签 统计

bash ×1

c# ×1

function ×1

methods ×1

oop ×1

python ×1

python-3.x ×1

subshell ×1