CS0029:无法将类型'System.DateTime'隐式转换为'var

时间:2014-08-09 06:52:27

标签: .net dll reference .net-assembly .net-framework-version

我的网络应用程序运行正常。这没有问题。

突然间,我需要在项目中添加System.Web.Helpers.ddl的引用。在我的项目中添加此项后,我收到错误

无法在此行上将类型'System.DateTime'隐式转换为'var'var date = DateTime.Now.AddYears(i);

在此之前它完美运行,我没有对我的代码做任何改动。

protected void Bind_Year()
{
    try
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Year", typeof(int));
        for (int i = -2; i < 4; i++)
        {
            var date = DateTime.Now.AddYears(i);
            var year = date.Year;
            dt.Rows.Add(year);

        }
        DropDownList3.DataSource = dt;
        DropDownList3.DataBind();

    }
    catch (Exception ex)
    {
        WebMsgBox.Show(ex.Message);
    }

}

1 个答案:

答案 0 :(得分:1)

这里的问题是你有一个名为var的地方。

我自己并不认为这是可能的,所以我在LINQPad尝试了它:

void Main()
{
    var x = DateTime.Today;
}
public class var
{
}

果然,它给了我这个编译错误:

  

无法隐式转换类型&#39; System.DateTime&#39;到UserQuery.var&#39;

所以显然你必须在你的项目或引用的程序集中有这样的类。

与内置关键字相同的命名类型或成员是一个坏主意。

要解决此问题,您应该将类​​型重命名为其他内容。除非您建模的世界有一个名为&#34; var&#34;的概念,否则我会说更具描述性的名称可能更好,但如果你真的想要这个名字,可以考虑只改用V的大写字母。使它Var,编译器应该停止抱怨。