作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的internal Game class
中,我既有a)定义了另一个嵌套的internal GamerTags class
,又有b)定义了GamerTags[] _array
变量。
在我的internal GamerTags class
(嵌套类,为简单起见,我省略了它)中,我有一个readonly Hashtable
。初始化后,当我尝试分配值时,仍然会收到null ref exception
。我不是在更改指针,而是仅更改值,是否需要为Hastable添加另一个初始化?
internal class GamerTags
{
private readonly Hashtable _privateReadonlyHashTable;
private string _json;
private string _hash;
internal IDictionary privateReadonlyHashTable
{
get
{
return this._privateReadonlyHashTable;
}
}
internal string Hash
{
get
{
this.EnsureHash();
return this._hash;
}
}
internal object this[string key]
{
get
{
return this._privateReadonlyHashTable[key];
}
set //throws an exception
{
this._privateReadonlyHashTable[key] = value;
}
}
internal string Json
{
get
{
if (string.IsNullOrEmpty(this._json))
{
this._json = myJsonSerializer.Serialize(this._privateReadonlyHashTable);
}
return this._json;
}
}
internal int X
{
get;
private set;
}
internal int Y
{
get;
private set;
}
internal GamerTags(int x, int y)
{
this.X = x;
this.Y = y;
}
private void EnsureHash()
{
bool flag = false;
if (string.IsNullOrEmpty(this._hash))
{
if (flag)
{
if (this.Json.Length < 100)
{
this._hash = this.Json;
return;
}
byte[] bytes = Encoding.ASCII.GetBytes(this.Json);
byte[] numArray = (new SHA1CryptoServiceProvider()).ComputeHash(bytes);
this._hash = Convert.ToBase64String(numArray);
return;
}
this._hash = this.FastHash();
}
}
private string FastHash()
{
StringBuilder stringBuilder = new StringBuilder();
foreach (string key in this._privateReadonlyHashTable.Keys)
{
stringBuilder.Append(key);
stringBuilder.Append("_");
stringBuilder.Append(this._privateReadonlyHashTable[key]);
stringBuilder.Append("_");
}
return stringBuilder.ToString();
}
}
}
int a = 2; int b = 0;
GamerTags GamerTag = new Game.GamerTags(a, b);
GamerTag["Fuel"] = "Loaded"; //throws an exception
GamerTag["EngineStatus"] = (boolIsItOn ? 1 : 0); //throw an exception too
最佳答案
实际上,您需要实例化_privateReadonlyHashTable字段。
internal class GamerTags
{
private readonly Hashtable _privateReadonlyHashTable = new Hashtable();
..
..
}
关于c# - 具有只读哈希表的嵌套内部类在分配时引发Null ref异常。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29862688/
我是一名优秀的程序员,十分优秀!