Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio 2015封装字段_C#_.net_Visual Studio_Unicode - Fatal编程技术网

C# Visual Studio 2015封装字段

C# Visual Studio 2015封装字段,c#,.net,visual-studio,unicode,C#,.net,Visual Studio,Unicode,在Visual Studio 2013中,当我封装一个以I字母开头的字段时。它生成一个以字母开头的属性 int inside = 0; public int Inside { get { return inside; } set { inside = value; } } 但在Visual Studio 2015中,如果我封装同一字段,它将生成一个以字母开头的属性。应用一些缩进规则并在get和set修饰符之间添加空格 int inside = 0; public int

在Visual Studio 2013中,当我封装一个以
I
字母开头的字段时。它生成一个以字母开头的属性

int inside = 0;

public int Inside
{
    get { return inside; }
    set { inside = value; }
}

但在Visual Studio 2015中,如果我封装同一字段,它将生成一个以字母开头的属性。应用一些缩进规则并在get和set修饰符之间添加空格

int inside = 0;

public int İnside
{
    get
    {
        return inside;
    }

    set
    {
        inside = value;
    }
}
我怎样才能改变这种行为?我使用的是土耳其语键盘,如果它是相关的,并且系统文化是土耳其语的

您错误地键入了土耳其语I,而不是英语I

这似乎是对重构代码的调试,在将第一个字母转换为大写字母时,无法以安全的方式处理用户的区域性

土耳其语
i
是用来表示不同文化之间差异的一种语言,因为
i
是“ý”的大写字母。例如,检查MSDN中的文章

要键入拉丁变量名,请确保已将键盘切换为英语

正如OP所评论的,结果不受键盘语言的影响,而是受用户的语言环境的影响。这意味着负责封装字段的Roslyn重构使用当前的CultureInfo而不是不变的CultureInfo执行
ToUpper
调用

Roslyn重构是开源的,因此很容易找到相关的代码。在中,
GeneratePropertyName
方法在不指定区域性的情况下调用
char.ToUpper

return char.ToUpper(baseName[0]).ToString() + baseName.Substring(1);
应易于将其更改为:

return char.ToUpper(baseName[0],CultureInfo.InvariantCulture).ToString() 
      + baseName.Substring(1);
更新

我在Roslyn的网站上看到过

更新2


不幸的是,这个问题以“故意”结束。似乎无论是谁关闭它,都会将用户的区域设置与编写文本时使用的语言相混淆

谢谢您的回答。这似乎不是键盘的问题,而是区域设置的问题。如果我将区域设置从“控制面板>区域和语言>格式”更改为英语,它似乎可以按预期工作。我相信2015是使用系统区域设置而不是2013。如果使用美国键盘和土耳其语格式,也会发生同样的事情吗?是的,键盘设置不会改变任何声音,就像它们添加了任何程序员认为bug的“特性”一样。Roslyn中的重构是由Roslyn执行的,因此问题很可能是在那里引入的——在不指定
InvariantCulture
的情况下执行案例更改。具体地说,在不指定区域性的情况下调用
char.ToUpper