使用帮助程序方法创建"this"实例



我有此代码;

public static void SetMyClass (this myClass data, ListControl crl) 
{
    var value = crl.SelectedValue.ToNullableInt();
    if (value.HasValue)
    {
        data = new myClass () { Id = value.Value };
    }
}

此代码不会通过新实例更改原始实例。

可以做到吗?

public static void SetMyClass (ref myClass data, ListControl crl) 
{
    var value = crl.SelectedValue.ToNullableInt();
    if (value.HasValue)
    {
        data = new myClass () { Id = value.Value };
    }
}

您失去了扩展方法,但会获得更改方法内部参考的能力。

不可能使用扩展方法。

这是无法完成的,因为您需要通过参考传递参数而不是需要使用ref关键字...而扩展方法不支持第一个参数的ref(实例)参数)。

为什么不将data S属性设置为值?

要保持助手,我将使用此服务

public static T GetMyClass<T>(this ListControl data) where T : myClass, new()
{
    var value = data.SelectedValue.ToNullableInt();
    if (value.HasValue)
    {
        return new T() { Id = value.Value };
    }
    return null;
}

最新更新