我有一个相当大的VB.NET项目,该项目是由一名前员工构建的。他得到了大部分的工作,但不是全部。

我知道它已经像这样运行了两年了。也许3。

现在,管理层正在努力恢复该项目并完成从未完成的工作。

该项目已分配给我,并且给了我一个月的时间来加快进度。

我正在用C#重写它,因为我的编码在该语言中更强大。

他使用的好主意之一是构造类,以便它们模仿数据库表:

  • 表名变为类名
  • 列名成为属性名
  • 列数据类型成为属性数据类型

  • 这是一个小例子:
    Public Class Acct_Code
        Private _Acct_Code_ID As String = String.Empty
        Private _Acct_Code As String = String.Empty
    
        Public Property Acct_Code_ID() As String
            Get
                Return _Acct_Code_ID
            End Get
            Set(ByVal value As String)
                _Acct_Code_ID = value
            End Set
        End Property
    
        Public Property Acct_Code() As String
            Get
                Return _Acct_Code
            End Get
            Set(ByVal value As String)
                _Acct_Code = value
            End Set
        End Property
    
    End Class
    

    目前,由于Error CS0542的原因,我无法将此VB代码放入C#中:



    我知道应该重命名类或属性;但是,我想一次使这个项目工作,而不是在这里创建根本无法使用的代码。

    有谁知道解决此编译器错误的方法-只是暂时直到我建立项目为止?

    我知道可以忽略警告和异常,但是我不知道忽略编译器错误的方法。

    最佳答案

    您不能忽略违反语言规则的行为。您必须固定名称。

    您可能希望在移植之前尝试在VB中修复名称,因为这样您就可以始终拥有有效的代码库...这将使您能够利用重构。然后,当您确定所有成员名称都与类型名称不同时,可以移植到C#。

    顺便说一句,当您移植该代码时,您应该利用自动实现的属性,从而保留:

    public class Account
    {
        public string Id { get; set; }
        public string Code { get; set; }
    }
    

    (然后尝试放弃允许对象以所有可能的方式进行变异……那是另一回事:)

    关于c# - 编译器错误CS0542的解决方法: member names cannot be the same as their enclosing type,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14899613/

    10-12 22:01