gpt4 book ai didi

C#- 在 'enclosing' 本地范围内使用变量?

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:24 26 4
gpt4 key购买 nike

我正在尝试向 C# 应用程序添加一些新功能 - 特别是,试图复制它的某些行为,但在 Web 浏览器中,而不是像现在这样在应用程序中。

我试图从 MainWindow.cs 类中的方法内部调用在 Browser.cs 类中定义的方法。

该方法在 Browser.cs 中定义:

public partial class Browser : Form{
public Browser(){
...
}
public void Browser_Load(object sender, EventArgs e){
webKitBrowser1.Navigate("https://google.com");
}
...
}

然后我尝试从 MainWindow.cs 调用它,如下所示:

public partial class MainWindow : Window{
...
public MainWindow(){
...
Browser mBrowser = new Browser();
Object sender = new Object();
EventArgs e = new EventArgs();
mBrowser.Browser_Load(sender, e);
...
}
...
}

但是,我收到一个编译错误:

A local or parameter named 'e' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter

这是什么意思?我以前从未遇到过这个错误——我在声明它的同一范围内使用变量——“封闭局部范围”是什么意思?这是因为我在括号内使用 e 来调用 mBrowser.Browser_Load(sender, e) 的方法吗?

当然,由于对该方法的调用与我定义 e 的范围在同一范围内,所以它不应该是范围问题吗?

我确实尝试通过以下方式执行调用:

mBrowser.Browser_Load(sender, EventArgs e);

但这给了我一个编译错误:

'EventArgs' is a type, which is not valid in the given context.

谁能指出我在这里做错了什么,以及我应该怎么做才能正确调用此方法?

最佳答案

错误很明显,您已经在范围内定义了 e 命名变量,(可能在您未显示的代码部分)

但更重要的是,您不应该像那样调用 Load 事件,而应该在单独的方法中提取功能并从您的 中调用该方法 Load 事件等地方。

喜欢:

public void SomeMethodToBeCalledOnLoad()
{
webKitBrowser1.Navigate("https://google.com");
}

public void Browser_Load(object sender, EventArgs e)
{
SomeMethodToBeCalledOnLoad();
}

public MainWindow(){
...
Browser mBrowser = new Browser();
Object sender = new Object();
EventArgs e = new EventArgs();
SomeMethodToBeCalledOnLoad();//here
...
}

关于C#- 在 'enclosing' 本地范围内使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36893000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com