我疯了吗?c#/静态修饰符

我疯了吗?c#/静态修饰符,c#,static-variables,C#,Static Variables,我有下面的代码,奇怪的是,如果我在同一请求中多次调用它,它会不断返回相同的值(即使filename) 我刚刚浏览了代码,甚至stringbytes都是完全相同的(即GetBytes(string))返回相同的值 public static string Base64EncodeString(string filename) { var stringbytes = System.Text.Encoding.Default.GetBytes(filename);

我有下面的代码,奇怪的是,如果我在同一请求中多次调用它,它会不断返回相同的值(即使
filename

我刚刚浏览了代码,甚至
stringbytes
都是完全相同的(即GetBytes(string))返回相同的值

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

我怀疑你没有看到你认为你看到的东西。如果使用不同的filename值调用该方法,则该方法不会返回相同的值。。。除非您使用的字符不受
编码的支持。默认值
。(我不建议使用
编码。默认值
,除非您确实需要特定于平台的编码。)

您的代码看起来是正确的。如果这不是Jon Skeet建议的编码问题,我猜您在某个地方有一个静态文件名和/或stringbytes变量,并且发布的代码与原始代码不是100%相同。

您是否检查了正在加载的文件。您可能只是复制了要打开的文件,给了它一个不同的名称,并且没有修改内容。

如果
stringbytes
相同,则
filename
相同。放入一些代码,将值打印到控制台。这应该可以工作。您正在调试器中查看它吗?可能会在每次调用时记录filename和base-64字符串的值。@Daniel:不太正确。
文件名
的几个不同值都可能包含无法通过
编码的字符。默认值
,它们都可以被编码形式“?”:)替换,与您的问题没有直接关系,但您确定要使用依赖系统的默认编码而不是像UTF8这样的固定编码吗?默认编码甚至不能表示所有unicode字符串。您的代码对我来说工作正常。