【问题标题】:CS0029: Cannot implicitly convert type 'System.DateTime' to 'varCS0029:无法将类型“System.DateTime”隐式转换为“var”
【发布时间】:2014-08-09 06:52:26
【问题描述】:

我的网络应用程序运行良好。没有问题。

突然间,我需要在我的项目中添加 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);
    }

}

【问题讨论】:

  • 这是哪个 .NET 版本或 C# 版本?
  • 现在.net框架是4.0
  • 您是否在某处定义了一个名为 var 的类型?
  • 这是真正的代码,而不是重新输入更多代码,即。你复制粘贴到这里,你没改?
  • 我很确定你在某处有一个名为 var 的类型,尝试将光标放在它上面并在 Visual Studio 中按 F12 看看会发生什么。

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


【解决方案1】:

这里的问题是你在某处有一个名为 var 的类型。

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

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

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

无法将类型“System.DateTime”隐式转换为“UserQuery.var”

显然,您的项目中或引用的程序集中必须有这样的类。

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

要解决此问题,您应该将类​​型重命名为其他名称。除非您正在建模的世界有一个名为“var”的概念,否则我会说一个更具描述性的名称可能会更好,但如果您真的想要这个名称,请考虑将 V 大写使其成为 Var 并且编译器应该别抱怨了。

【讨论】:

  • 先生,对不起,我没有添加这个类,即使我不知道它是从哪里自动进入我的 APP_Code 文件夹的。
  • 我自己认为这是不可能的:这是可能的,因为var不是保留字it is a contextual keyword。任何上下文关键字都可以用作标识符,而保留关键字则不能。还有.. +1 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 2022-07-06
  • 2017-10-06
  • 2022-08-23
  • 2023-01-18
  • 2019-10-03
  • 1970-01-01
相关资源
最近更新 更多