C# 泛型:从文本文件中读取数据,以泛型形式返回

C# 泛型:从文本文件中读取数据,以泛型形式返回

经常遇到需要返回不同数据类型,所以尝试了一下泛型函数,经测试可行。学会了返回值为泛型时该如何处理,用 (T)(object) 语句进行类型转换,例如:

data[i][j] = (T)(object)double.Parse("12.3"); 

完整代码如下:

/// <summary>
/// 从文件中读取数据(泛型方式)
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="fileFullName">待读文件</param>
/// <param name="passRowNums">跳过行数(不需跳过则为0)</param>
/// <param name="separator">分隔符</param>
/// <returns></returns>
public static T[][] readFile<T>(string fileFullName, int passRowNums, string separator)
{
    if (File.Exists(fileFullName))   //判断文件是否存在(地址是否正确)
    {
        string[] lines = File.ReadAllLines(fileFullName);  //按行读取到字符串类型
        T[][] data = new T[lines.Length - passRowNums][];
        for (int i = 0; i < data.Length; i++)
        {
            //按分隔符分割
            string[] iLine_splitted = Regex.Split(lines[i + passRowNums].Trim(), separator);
            data[i] = new T[iLine_splitted.Length];

            //string类型
            if (typeof(T).Equals(typeof(string))) data[i] = (T[])(object)iLine_splitted;

            //double类型
            if (typeof(T).Equals(typeof(double)))
            {
                for (int j = 0; j < data[i].Length; j++)
                {
                    data[i][j] = (T)(object)double.Parse(iLine_splitted[j]); 
                }     
            }

            //int类型
            if (typeof(T).Equals(typeof(int)))
            {
                for (int j = 0; j < data[i].Length; j++)
                {
                    data[i][j] = (T)(object)(int)double.Parse(iLine_splitted[j]);
                }
            }

        }
        return data;
    }
    else { Console.WriteLine("未找到文件:" + fileFullName); return null; }         
}
上一篇:Scala 可变数组ArrayBuffer


下一篇:一个情怀引发的生产事故