我写了这段代码,但它不起作用。我明白为什么,但我该如何解决它?
internal class ViewProperty<T> : IViewProperty<T>
{
protected Dictionary<Type, object> PropetriesStorage { get; } = new();
public bool TryGetProperty<PropType, SubType>(out PropType _property) where PropType : IViewProperty<SubType>
{
bool result = PropetriesStorage.TryGetValue(_property.GetType(), out var temp);
Trace.Assert(temp is PropType);
_property = (PropType)temp;
return result;
}
}
错误“CS0269 使用未分配值的输出参数‘_property’。”
参数(即使未初始化)在调用时不包含类型吗?
访问值之前一定要给被调用方法中的out参数赋值 错误CS0269
您正在尝试
_property
使用.GetType()
.但调用该方法时,变量_property
还没有初始化我建议使用
typeof(PropType)
typeof(PropType)
Type
返回代表 type的类型的对象PropType
,该类型是方法的泛型参数,可以正常工作,因为PropType
它已经在编译时定义并且不依赖于变量的值我的修复方法是将未初始化的变量引用替换
GetType()
为类型安全引用 viatypeof(PropType)
,这消除了编译问题并保留了方法的逻辑我用过这个: