创建方法:NullReferenceException错误

时间:2014-01-21 19:24:23

标签: c# nullreferenceexception

我对C#很新,所以请耐心等待。

这是我现有的代码块。

public static class DummyClassName
{
    public static T DummyTemplateFunc1<T>(DummyInterfaceName aaa1, Func<T> action1)
    {
         T DummyVal1 = action1();
         {
             string strVal = aaa1.SomethingInInterface();
             // similar code
         }
        return DummyVal1;
    }

    public static T DummyTemplateFunc2<T>(DummyInterfaceName aaa1, Func<T> action2)
    {
        T DummyVal2 = action2();
        {
            string strVal = aaa1.SomethingInInterface();
            // similar code
        }
        return DummyVal2;
    }
}

我的任务是避免重复代码并使用另一种方法来处理重复代码。这就是我的尝试。

public static class DummyClassName
{
    public static void DummyMethodName(DummyInterfaceName aaa1)
    {
        string strVal = aaa1.SomethingInInterface();
        // similar code
    }

    public static T DummyTemplateFunc1<T>(DummyInterfaceName aaa1, Func<T> action1)
    {
        T DummyVal1 = action1();
        DummyMethodName(aaa1);
        return DummyVal1;
    }

    public static T DummyTemplateFunc2<T>(DummyInterfaceName aaa1, Func<T> action2)
    {
        T DummyVal2 = action2();
        DummyMethodName(aaa1);
        return DummyVal1;
    }

}

但是这给了我一个

"System.NullReferenceException: Object reference not set to an instance of an object."
测试时出现

错误。

我做错了什么?有人可以建议解决方法吗?

1 个答案:

答案 0 :(得分:0)

public static T DummyTemplateFunc2<T>(DummyInterfaceName aaa1, Func<T> action2)
{
    T DummyVal1 = action1();
    DummyMethodName(aaa1);
    return DummyVal1;
}

使用action1的行应使用action2,对吧? action1抛出一个nullpointer引用,因为它不知道在哪里查找它,因为它不在你方法的范围内。