我有这个代码;
public static void SetMyClass (this myClass data, ListControl crl)
{
var value = crl.SelectedValue.ToNullableInt();
if (value.HasValue)
{
data = new myClass () { Id = value.Value };
}
}
此代码不会通过新代码更改原始实例。
可以这样做吗?
答案 0 :(得分:1)
public static void SetMyClass (ref myClass data, ListControl crl)
{
var value = crl.SelectedValue.ToNullableInt();
if (value.HasValue)
{
data = new myClass () { Id = value.Value };
}
}
您松开了扩展方法但获得了改变方法内部参考的能力。
无法使用扩展方法。
答案 1 :(得分:0)
无法完成,因为您需要通过引用传递参数而不是需要使用ref
关键字的值...并且扩展方法不支持ref
作为第一个参数(实例)参数)。
为什么不将data
属性设置为值?
答案 2 :(得分:0)
保留助手我将改用
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;
}