gpt4 book ai didi

c# - 通用方法中的 "Use of unassigned local variable"

转载 作者:太空狗 更新时间:2023-10-29 19:52:07 29 4
gpt4 key购买 nike

使用未分配的局部变量“model”。是我收到的错误消息。就在我说 if (model == null) 的地方。我不确定为什么它会给我一个编译时错误。请有人帮忙。

public static T TryGet<T>(string fileName) where T : new()
{
T model;
using (var storageFile = IsolatedStorageFile.GetUserStoreForApplication())
{
using (var stream = new IsolatedStorageFileStream(fileName, FileMode.Open, storageFile))
{
if (stream.Length > 0)
{
var serializer = new DataContractSerializer(typeof(T));
model = (T)serializer.ReadObject(stream);
}
}
}
if (model == null)
{
model = new T();
}
return model;
}

最佳答案

如错误所述,在编译器可以证明它已被赋值之前,您不能使用局部变量。

在您的情况下,如果您的 if 条件为假,则永远不会分配 model 变量。

你可以先给它赋一个初始值来解决这个问题:

T model = default(T);

请注意,如果 T 是结构类型,则 model == null 永远不会为真。

您应该将代码更改为

using (var storageFile = IsolatedStorageFile.GetUserStoreForApplication())
using (var stream = new IsolatedStorageFileStream(fileName, FileMode.Open, storageFile))
{
if (stream.Length > 0)
{
var serializer = new DataContractSerializer(typeof(T));
return (T)serializer.ReadObject(stream);
}
else
{
return new T();
}
}

关于c# - 通用方法中的 "Use of unassigned local variable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4910687/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com