如何在cs文件中查看命令行的输出

时间:2018-01-12 08:10:33

标签: c# r.net

我在.cs文件中工作,我需要查看c#程序执行的某个对象/变量的输出。我每次都会用它来进行补偿。

例如,在下面的代码中,我需要查看变量 DataNaiss 的输出(类型,行数,包括的所有元素......)。

var DataNaiss = engine.Evaluate("DataNaiss=DataIns[which(cond1 & DataIns$Id %in% ID_Final),'Date.naissance']").AsCharacter();

我尝试添加此代码:

Console.WriteLine(DataNaiss.ToString());
Console.ReadLine();

输出如下:

enter image description here

请看结束行 R.net CharacterVector 。它似乎谈论 DataNaiss 的类型但它的所有元素在哪里?

换句话说,直到现在我还不知道为什么我也在同一个控制台窗口中导入了表 DataAch 的数据,知道我只是调用控制台窗口来显示 DataNaiss 而不是其他的东西!!你可以在第一个表 DataAch 的相同图片元素中看到。 我导入数据的代码是:

 REngine engine = REngine.GetInstance();

 DataFrame DataAch = engine.Evaluate("DataAch=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/Achats1.csv',header=TRUE,sep =';',fill =TRUE)").AsDataFrame();
 DataFrame DataDia = engine.Evaluate("DataDia=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/Diagnostic.csv',header=TRUE,sep =';',fill=TRUE)").AsDataFrame();
 DataFrame DataCad = engine.Evaluate("DataCad=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/CADEAUX.csv',header=TRUE,sep =';',fill=TRUE)").AsDataFrame();
 DataFrame DataIns = engine.Evaluate("DataIns=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/Inscrits.csv',header=TRUE,sep =';',fill =TRUE)").AsDataFrame();

你怎么解释这个?

2 个答案:

答案 0 :(得分:2)

  

请看结束行R.net CharacterVector。它似乎在谈论DataNaiss的类型但是它的所有元素在哪里?

在变量上调用.ToString()不会神奇地显示您需要的所有数据。

根据Microsoft Documentation,您可以看到:

  

ToString方法的默认实现返回Object

类型的完全限定名称

因此,您可以理解,在您的案例中,名为DataNaiss的变量的类型实际上是CharacterVector类型。

查看R.Net的{​​{3}},您很明显可以看到课程CharacterVector未覆盖ToString方法。

为了获取变量DataNaiss的元素,您必须自己访问它们。我从源代码中看到的唯一方法就是访问它们DataNaiss[0],因为在源代码中你有:

public override string this[int index]
{
    get
    {
        if (index < 0 || Length <= index)
        {
            throw new ArgumentOutOfRangeException();
        }
        using (new ProtectedPointer(this))
        {
            return GetValue(index);
        }
    }
    set
    {
        if (index < 0 || Length <= index)
        {
            throw new ArgumentOutOfRangeException();
        }
        using (new ProtectedPointer(this))
        {
            SetValue(index, value);
        }
    }
}

我建议您可以根据它的长度遍历DataNaiss对象,并获取所需的数据,例如,如果您有权访问Length属性:

for (int i=0; i<DataNaiss.Length; i++)
{
    Console.WriteLine(DataNaiss[i]);
}

未经测试。我根据我在他们的代码中读到的内容来回答所有这些问题。

答案 1 :(得分:0)

通过覆盖DataNaiss变量中的类型上的ToString函数,您可以将它们打印到控制台。

关注the MSDN Guide,你可以这样做:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public override string ToString()
    {
        return "Person: " + Name + " " + Age;
    }
}

然后在对象上调用ToString()可以打印它们。