在构造函数C#中调用函数

时间:2015-01-19 12:22:49

标签: c# wpf data-binding windows-store

我有课程CategoryPage,在一些名为navigationHelper_loadState的地区,有一个名为clickeditem的函数,其中包含一个参数

        public void clickeditem(ItemClickEventArgs Args)
    {
        function = Args.ClickedItem.ToString();
    }

功能是public static string function;

当我尝试在构造函数中调用clickeditem时,

它需要参数(ItemClickEventArgs Args),当我发送给构造函数时,它会成为Null。 我试图创建另一个构造函数,或者只是从另一个公共类调用但是我失败了

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

如果方法没有为参数提供默认值(通过重载或在参数列表中指定它),则调用者必须提供该值。没有例外。

在您的问题中,当调用者没有要传递function对象时,您甚至不希望将Args字段设置为什么。但是为了争论,让我们说你有一些 string值。

然后你应该改变你的代码,使它看起来更像这样:

public void clickeditem(ItemClickEventArgs Args)
{
    SetFunctionFieldValue(Args.ClickedItem.ToString());
}

private void SetFunctionFieldValue(string text)
{
    function = text;
}

然后你可以从构造函数中调用相同的方法:

public CategoryPage()
{
    SetFunctionFieldValue("some field value");
}

当然,我会注意到实际行为是微不足道的:你只是设置一个字段的值。所以在我看来,另一种方法是简单地在构造函数中设置字段值:

public CategoryPage()
{
    function = "some field value";
}

然后你可以单独留下事件处理程序方法。

如果您甚至没有string值来分配function字段,那么我不知道您实际要求做什么。您的示例中的所有clickeditem()方法都设置为该字段,那么如果您没有将字段设置为值,为什么还要从构造函数中调用它? :)