2010-12-02 40 views
2

我有下面的代碼,奇怪的是,它仍然返回相同的值(即使filename)是不同的,如果我在同一個請求中多次調用它。我會生氣嗎? c#/ static modifier

我剛剛通過代碼,甚至stringbytes是完全相同的(即GetBytes(字符串))返回相同的值。

public static string Base64EncodeString(string filename) 
    { 
     var stringbytes = System.Text.Encoding.Default.GetBytes(filename); 
     return Convert.ToBase64String(stringbytes); 
    } 
+1

如果`stringbytes`是相同的,那麼`filename`是相同的。把一些代碼打印到控制檯的值。 – 2010-12-02 17:26:16

+0

這應該工作。你在調試器中查看它嗎?也許在每個調用中記錄文件名和base-64字符串的值。 – 2010-12-02 17:26:45

回答

5

我懷疑你沒有看到你認爲你在看什麼。該方法將不會返回相同的值,如果您使用不同的文件名稱調用它...除非您使用Encoding.Default不支持的字符。 (我不會建議使用Encoding.Default,除非你的真的是想要一個平臺特定的編碼。)

1

你的代碼看起來正確。如果它不是Jon Skeet所建議的編碼問題,我會猜測你的某個地方有一個靜態的fileName和/或stringbytes變量,並且發佈的代碼與原始代碼不是100%相同。

0

你檢查了你正在加載的文件嗎?您可能只是複製了您打開的文件,給它一個不同的名稱並且沒有修改內容。