ILNumerics返回ILArray <t> .a属性澄清</t>

时间:2014-08-04 20:00:42

标签: visual-studio-2013 c#-5.0 static-variables ilnumerics

我还有另一个关于IL子社区的问题。

我正在通过ILArrays和类似的方式找到我的方式,但我希望得到另一个澄清。 在ILNumerics网站上报告的示例中,我们(简化了不需要的内容)

  public class Computing_Module1 : ILMath
  {
     public static ILRetArray<double> SimpleMethod()
     {    using (ILScope.Enter() )
          {
            ILArray<double> C = ILSpecialData.sinc(40, 50);
            return C[0, full];  
           }
      }
   } 

如果你运行这段代码,由于我能理解的最终C [0,full],一切都很完美。相反,我在ILMath.csvread周围有以下包装代码:

    public static ILRetArray<double> ReadCsvIL(string aFileName)
    {
        using (ILScope.Enter())
        {
            string stringData;
            try
            {   stringData = getDataFromText(aFileName);

                ILArray<double> myData = ILMath.csvread<double>(stringData);
                return myData ;
            }
            catch (FileNotFoundException anExc)
            {
                Console.WriteLine(anExc.Message);
                return null;
            }
          }
      }

这是行不通的:两个解决方法:使用示例中提供的相同技巧替换

ILArray<double> myData = ILMath.csvread<double>(stringData);
return myData ;

ILArray<double> myData = ILMath.csvread<double>(stringData);
return myData[ILMath.full, ILMath.full] ;

或采用ILArrays的.a属性,因此应该写成:

 ILArray<double> myData = ILMath.csvread<double>(stringData);
 myData.a = myData;
 return myData ;

问题:我们是否总是必须使用.a属性来分配ILRetArray?我是否正确理解如果返回anArray [full,full]然后在幕后执行一些深层复制,基本上分配给.a属性?还有其他方法可以做到这一点,最有效的方法是什么?

为了完整性,从文件中检索文本的函数只是一个围绕streamreader.ReadToEnd()的包装函数,这里是代码:

         public static string getDataFromText(string aFileName)
    {
        if (!File.Exists(aFileName))
            throw new FileNotFoundException("The file does not exist.");

        string stringData = String.Empty;

        using (StreamReader streamReader = new StreamReader(aFileName))
        {
            stringData = streamReader.ReadToEnd();
        }
        return stringData;

    }

希望这是有道理的;非常感谢你。

0 个答案:

没有答案