2011-03-11 40 views
0

我是新來的C#,但仍最簡單的方法,使通用的日誌記錄在C#

public class Logging 
{ 
    public static int Write(params object[] items) 
    { 
     return Console.Write(items); 
    } 
} 

似乎剛剛好,但不起作用。 那麼所有的實例或Write都不是在編譯時定義的,但它們是。

如果我叫

Logging.Write("Hello world"); 

我得到的字符串

System.Object[] 

爲響應

+1

當你說它「不起作用」,你能詳細說明嗎? – Nick 2011-03-11 11:08:44

+3

你的問題是什麼? 「不起作用」沒有足夠的錯誤描述。 – 2011-03-11 11:09:07

+0

我看到你的問題不是關於日誌記錄,而是關於ConsoleWriteline和dtb已經回答了你的問題。如果您確實想要推出自己的日誌記錄,請考慮使用成熟的LoggingFramework(log4Net,NLog),或者如果您想交換日誌框架,請改爲使用Logging抽象(CommonLogging:http://netcommon.sourceforge.net/) 。 – tobsen 2011-03-11 11:57:27

回答

4

有兩個問題與您的代碼:

  1. 沒有過載Console.Write method不返回void(例如,int)。

  2. Console.Write method沒有超過object的數組。過載匹配是一個單一的object,它通過調用ToString methodobject轉換爲string。對於object的數組,ToString method返回"System.Object[]"


你試圖做這樣的事情?

public class Logging 
{ 
    public static void Write(params object[] items) 
    { 
     Console.WriteLine(string.Join(" ", items)); 
    } 
} 

例子:

int x = 42; 
Logging.Write("The value of x is", x); 

輸出:

 
The value of x is 42 
+0

對於遲到的回覆很抱歉,但我希望我的函數可以接受任何數字和任何類型的參數,將參數傳遞給其他函數。我能夠在C,C++,Python甚至MATLAB中做到這一點。 – 2011-03-14 10:14:41

0

我知道這不是你的問題是什麼,但我會建議使用一個日誌庫,我愛NLog,那麼Log4Net還有更多,但那些是我知道的!

相關問題