代码
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class ResourcesManager : MonoBehaviour
{
private static Dictionary<string, string> dic = new Dictionary<string, string>();
static ResourcesManager()
{
TxtLoadDic();
}
private static void TxtLoadDic()
{
string mapTxt = Resources.Load<TextAsset>("ResMap").text;
string line = null;
using (StringReader reader = new StringReader(mapTxt))
{
while ((line = reader.ReadLine()) != null)
{
var keyValue = line.Split('=');
dic.Add(keyValue[0], keyValue[1]);
}
}
}
private static string GetValue(string key)
{
if (dic.ContainsKey(key)) { return dic[key]; }
return null;
}
public static T load<T>(string path) where T : Object
{
return Resources.Load<T>(GetValue(path));
}
}
StringReader解释
StringReader是System.IO命名空间中的一个类,用于从字符串中读取字符流。它提供了一些方法和属性,用于读取和操作字符串中的字符。
使用StringReader类可以方便地从字符串中逐行读取文本内容,类似于从文件中读取文本行。
以下是StringReader类的一些常用方法和属性:
-
ReadLine():从字符串中读取一行文本,并将其作为字符串返回。如果已经读取到字符串的末尾,则返回null。
-
Read():从字符串中读取一个字符,并将其作为整数返回。如果已经读取到字符串的末尾,则返回-1。
-
Peek():返回下一个要读取的字符,但不移动读取位置。
-
Close():关闭StringReader对象,并释放相关的资源。
使用StringReader类可以将字符串作为输入源,逐行读取其中的文本内容。例如:
string text = "Line 1\nLine 2\nLine 3";
StringReader reader = new StringReader(text);
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
reader.Close();
在上面的示例中,我们创建了一个StringReader对象,并将字符串"Line 1\nLine 2\nLine 3"作为输入源。然后,使用while循环和ReadLine()方法逐行读取文本内容,并将每行文本输出到控制台。
需要注意的是,使用StringReader类时,要确保在使用完毕后调用Close()方法来关闭StringReader对象,以释放相关的资源。
总结一下,StringReader是System.IO命名空间中的一个类,用于从字符串中读取字符流。它提供了一些方法和属性,用于读取和操作字符串中的字符。使用StringReader类可以方便地从字符串中逐行读取文本内容。
using(){}是什么用法
using语句是C#中的一种语法结构,用于在代码块结束时自动释放资源。它可以用于管理实现了IDisposable接口的对象,确保在使用完毕后正确地释放资源。
using语句的一般语法如下:
using (资源对象声明)
{
// 使用资源对象的代码
}
在using语句中,资源对象声明是一个用于声明和初始化资源对象的语句。资源对象必须实现IDisposable接口,该接口定义了Dispose()方法,用于释放资源。
在代码块中,可以使用资源对象进行操作。当代码块结束时,无论是正常结束还是发生了异常,using语句都会自动调用资源对象的Dispose()方法来释放资源。
以下是一个使用using语句的示例:
using (FileStream fileStream = new FileStream("file.txt", FileMode.Open))
{
// 使用fileStream进行文件操作
// ...
} // 在这里自动调用fileStream.Dispose()释放资源
在上面的示例中,使用using语句创建了一个FileStream对象,并将其赋值给fileStream变量。在代码块中,可以使用fileStream进行文件操作。当代码块结束时,无论是正常结束还是发生了异常,using语句会自动调用fileStream.Dispose()方法来释放文件流的资源。
使用using语句可以确保资源对象在使用完毕后被正确释放,避免资源泄漏和内存泄漏的问题。
需要注意的是,using语句只能用于管理实现了IDisposable接口的对象。如果资源对象没有实现IDisposable接口,就不能使用using语句来管理它。
注:本人学习笔记,内容仅供参考