我正在使用Unity c#中的一个项目,我得到一个错误,我不明白他为什么这么说。
这些错误指向我在以下文件中调用SaveDictionary()和LoadDictionary()方法的地方:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class BinaryDictionary<T>
{
public BinaryDictionary(string name, string path = FileReadWrite.binPath)
{
fileName = name;
this.path = path;
}
protected Dictionary<string, T> dict;
protected string fileName;
protected string path;
protected virtual void LoadDictionary()
{
if (dict == null)
{
try
{
dict = FileReadWrite.GetBinaryFile<Dictionary<string, T>>(fileName, path);
}
catch (System.IO.FileNotFoundException e)
{
Debug.LogWarning(fileName + " not found, making new Dictionary.");
dict = new Dictionary<string, T>();
}
}
}
public virtual void SaveDictionary()
{
if (dict != null)
{
FileReadWrite.SaveBinaryFile(fileName, path, dict);
}
}
public T GetElement(string key)
{
LoadDictionary();
T toReturn = dict.ContainsKey(key) ? dict[key] : default(T);
return toReturn;
}
public void AddElement(string key, T value)
{
LoadDictionary();
if (!dict.ContainsKey(key))
{
dict.Add(key, value);
}
else
{
dict[key] = value;
}
SaveDictionary();
}
public void RemoveElement(string key)
{
LoadDictionary();
if (dict.ContainsKey(key))
{
dict.Remove(key);
SaveDictionary();
}
}
public Dictionary<string, T>.KeyCollection GetKeys()
{
LoadDictionary();
return new Dictionary<string, T>(dict).Keys;
}
public Dictionary<string, T> GetDictionary()
{
LoadDictionary();
return new Dictionary<string, T>(dict);
}
}
起初这些错误并没有显示出来。当我为参数&#34; path&#34;添加默认值FileReadWrite.binPath时出现了它们。在构造函数中。
我将FileReadWrite.binPath声明如下:
public const string binPath = "Other/Bin/";
当我再次删除默认值时(在构造函数中),这些错误消失了。
有人知道我做错了什么,或者他为什么在这种情况下说错误?
答案 0 :(得分:0)
您可以尝试不使用FileReadWrite.binPath
作为构造函数的默认参数。试试这个:
public BinaryDictionary(string name, string path = null)
{
fileName = name;
if(path == null)
{
this.path = FileReadWrite.binPath;
}
}
我不知道确切的问题,但我猜你的虚拟方法会导致与你的构造器发生冲突。 (虽然不确定,但这只是猜测)