c# - 属性私有集合崩溃统一
问题描述
我有一个从网络获取一些数据的自定义类。
当我得到这些数据时,我想将它设置为属性的值,但是当我这样做时,统一崩溃了。注释行会在没有此行的情况下生成崩溃,一切正常。请参阅下面的代码:
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class GetDB
{
private readonly Main m;
private readonly string Url;
public string DBData {
get
{
if(DBData == null)
return null;
else
return DBData;
}
private set
{
DBData = value;
}
}
public GetDB(Main m, string url)
{
this.m = m;
this.Url = url;
}
public void GetServerData(){
m.StartCoroutine(GetText(Url, (result) =>{
this.DBData = result; //THIS LINE CRASHES UNITY
Debug.Log(result);
}));
}
IEnumerator GetText(string url, Action<string> result) {
UnityWebRequest www = UnityWebRequest.Get(url);
yield return www.SendWebRequest();
if(www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
}
else {
if (result != null)
result(www.downloadHandler.text);
}
}
}
我将如何解决这个问题,这里到底发生了什么?
如果有任何不清楚的地方,请告诉我,以便我澄清。
解决方案
您必须为属性使用支持字段:
string _dbData;
public string DBData
{
get
{
if(_dbData == null)
return null;
else
return _dbData;
}
private set
{
_dbData= value;
}
}
属性只是 getter 和 setter 方法的语法糖。所以你可以重写你的属性,如:
public string GetDBData()
{
if(_dbData == null)
return null;
else
return _dbData;
}
public void SetDBData(string value)
{
_dbData = value;
}
您实现该属性的方式:
public void SetDBData(string value)
{
// you will never get out of here
SetDBData(value);
}
推荐阅读
- python - 没有名为“flask_security”的模块
- python - 解决 ValueError:无法将浮点 NaN 转换为整数
- jsonschema - OpenAPI oneOf 显示项目两次(问题)?
- excel - 循环粘贴工作表类的方法
- excel - 在特定列中选择具有空值的 Excel 表格的最后一行
- c# - C# Web API 服务 - HttpRequestException:将内容复制到流时出错
- mysql - Python3:在以编程方式构建的查询中转义 MySQL 值
- excel - 如何使用数组公式在 Excel 中连接两个表?
- php - PHP 中带有 CURL 的 API
- eclipse - 在 Eclipse DLTK for TCL 中关闭列表扩展 {*} 错误