此代码抛出编译器错误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]
因此,我们想知道为什么这个错误不会被引入第二个代码块。