C# VB代码到C-命名空间Microsoft.VisualBasic

C# VB代码到C-命名空间Microsoft.VisualBasic,c#,vb.net,vb6,C#,Vb.net,Vb6,我正在将VB代码转换为C。下面是代码 CrByMonthCr = Val(DateDiff("m", StartDate, DateSerial(Year(EndDate), Month(EndDate), 1)) + 1) * MonthCr 在C代码中,我使用Microsoft.VisualBasic导入了名称空间。 我只解决了DateDiff函数。Val和DateSerial给出编译器错误 CrByMonthCr = Val(DateAndTime.DateDiff("m", Start

我正在将VB代码转换为C。下面是代码

CrByMonthCr = Val(DateDiff("m", StartDate, DateSerial(Year(EndDate), Month(EndDate), 1)) + 1) * MonthCr
在C代码中,我使用Microsoft.VisualBasic导入了名称空间。 我只解决了DateDiff函数。Val和DateSerial给出编译器错误

CrByMonthCr = Val(DateAndTime.DateDiff("m", StartDate, DateSerial(Year(EndDate), Month(EndDate), 1)) + 1) * MonthCr
有人知道为什么导入VisualBasic的名称空间会出错吗?如何解决这个问题

当前上下文中不存在DateSerial

作为静态方法存在于类中,因此要继续使用它,需要DateAndTime.DateSerialYearEndDate,MonthEndDate,1。
但是您可以简单地用Zohar Peled DateSerial提到的

替换它,DateAndTime的成员。 Val是转换的成员。因此,使用Microsoft.VisualBasic的完整代码;是

CrByMonthCr=Conversion.ValDateAndTime.DateDiffm,StartDate,DateAndTime.DateSerialDateAndTime.YearEndDate,DateAndTime.MonthEndDate,1+1*MonthCr;
它给出了什么错误?错误-DateSerial在当前上下文中不存在很多Microsoft.VisualBasic功能当然是.NET版本1的功能,在添加我的所有内容之前,有效地将其放入以最小化VB 6和VB.NET之间的转换。继续使用该功能的唯一原因是,如果您试图与某些.NET之前的VB代码保持bug-for-bug兼容。如果不是,我建议现在是时候探索每个函数的功能,然后确定使用普通的非VB框架类实现这些功能的标准方法。我必须同意@Damien_的观点。您应该做的第一件事是修改您的VB代码以删除所有特定于VB的代码。一旦它都是标准的.NET代码,那么将其转换为C就很简单了。这是disguide中两个月的不同之处-请参阅这篇关于这个主题的文章-我建议您稍微更改一下答案,因为Anup要求转换。基于此,我相信你的第二个答案是好答案。