编译器错误CS-1939

时间:2016-06-03 09:54:32

标签: c# visual-studio-2012 visual-studio-2015

此代码抛出编译器错误CS1939

[编译器详细信息:Microsoft Visual C#编译器版本4.0.30319.34209]

[Visual Studio版本:Visual Studio 2012专业版]

public class Program
{
    public static string F(ref int i)
    {
        string[] names= {"test","test2","test3"};

        return names[i];
    }
    public static void Main()
    {
        var list = new int[] { 0, 1, 2, 3, 4, 5 };
        var q = from x in list
                let k = x
                select new TempData()
                 {
                     temp=Program.F(ref x)
                };


    }
}

public class TempData 
{
   public string temp;
} 

此代码不会抛出编译器错误CS1939

[编译器详细信息:Microsoft Visual C#编译器版本4.0.30319.34209]

[Visual Studio版本:Visual Studio 2012专业版]

 var languages = from lang in CultureManager.SupportedCultures
                        select new SelectListItem()
                        {
                            Value = GetTestLanguageBasedUrl(filterContext, defaultLanguage, ref lang),
                            Text = GetTextByKey(lang.Key.Substring(0, 2)),
                            Selected = CultureInfo.CurrentCulture.TwoLetterISOLanguageName.Equals(lang.Key.Substring(0, 2), StringComparison.InvariantCultureIgnoreCase)
                        };

private string GetTestLanguageBasedUrl(ActionExecutingContext filterContext, string defaultLanguage, ref KeyValuePair<string, CultureInfo> lang)
{
    if (!defaultLanguage.Equals(lang.Key.Substring(0, 2)))
    {
        if (!filterContext.RouteData.Values.ContainsKey("culture"))
            filterContext.RouteData.Values.Add("culture", lang.Key.Substring(0, 2));
    }
    else
    {
        if (filterContext.RouteData.Values.ContainsKey("culture"))
            filterContext.RouteData.Values.Remove("culture");

    }
    var nameValues = HttpUtility.ParseQueryString(Request.QueryString.ToString());
    if (nameValues != null && nameValues.Count > 0)
    {
        return Url.RouteUrl(filterContext.RouteData.Values) + "?" + nameValues.ToString();
    }
    else
    {
        return Url.RouteUrl(filterContext.RouteData.Values);
    }

} 

当我们将Visual Studio 2012专业版升级到Visual Studio 2015 Enterprise并进行编译时,我们了解了这个问题 相同的代码,但这次编译报告CS-1939错误。 以下是编译器详细信息

[编译:MS Visual C#编译器版本1.2.0.60317]

[Visual Studio Edition:Visual Studio 2015 Enterprise]

因此,我们想知道为什么这个错误不会被引入第二个代码块。

0 个答案:

没有答案