C#程序中的i可比较命名空间问题

C#程序中的i可比较命名空间问题,c#,visual-studio,icomparable,C#,Visual Studio,Icomparable,我正在开发一个使用IComparable的程序,我在遵循书中的代码,但不清楚应该把它放在哪里。我把它放在我的驱动程序中,但在原始程序中,主类加了下划线,表示 "Error 1 The namespace 'Exercise6B' already contains a definition for 'TaxPayer2' 我尝试在每个文件中更改内容并重命名我的类,但随后TaxOwn字段变为红色。任何指导都会有帮助。我对C#很陌生,不太懂 这是我的密码: class TaxPayer2 {

我正在开发一个使用IComparable的程序,我在遵循书中的代码,但不清楚应该把它放在哪里。我把它放在我的驱动程序中,但在原始程序中,主类加了下划线,表示

"Error  1   The namespace 'Exercise6B' already contains a definition for 'TaxPayer2'
我尝试在每个文件中更改内容并重命名我的类,但随后TaxOwn字段变为红色。任何指导都会有帮助。我对C#很陌生,不太懂

这是我的密码:

class TaxPayer2
{
    //Instance Fields
    private string ssn;
    private double grossIncome;
    private double taxOwed;

    private double incomeLimit;
    private double lowTaxRate;
    private double highTaxRate;

    public string Ssn
    {
        get { return ssn; }
        set { ssn = value; }
    }

    public double GrossIncome
    {
        get { return grossIncome; }
        set { grossIncome = value; }
    }

    public double TaxOwed
    {
        get
        {
            return taxOwed;
        }
    }

    public TaxPayer2()
    {
    }

    public TaxPayer2(string social, double income)
    {
        ssn = social;
        grossIncome = income;

        if (income < 30000)
        {
            taxOwed = .15 * income;
        }
        else
        {
            taxOwed = .28 * income;
        }

    }


    public TaxPayer2(double limit, double lowRate, double highRate)
    {
        incomeLimit = limit;
        lowTaxRate = lowRate;
        highTaxRate = highRate;
    }

} //end of TaxPayer main class
纳税人类别2
{
//实例字段
私有字符串ssn;
私人双格罗辛康;
私人双重征税;
私人双重收入;
私人双低税率;
私人双重高税率;
公共字符串Ssn
{
获取{return ssn;}
设置{ssn=value;}
}
公共双格罗辛康
{
获取{return grossIncome;}
设置{grossIncome=value;}
}
公共双重征税
{
得到
{
退还所欠税款;
}
}
公共纳税人2()
{
}
公共纳税人2(社会性、双收入)
{
ssn=社会性;
总收入=收入;
如果(收入<30000)
{
所欠税款=.15*收入;
}
其他的
{
所欠税款=.28*收入;
}
}
公共纳税人2(双重限额、双重低税率、双重高税率)
{
不一致=极限;
低税率=低税率;
高税率=高税率;
}
}//纳税人主类结束
司机

class TaxPayer2 : IComparable
{
        public string SSN { get; set; }
        public double Income { get; set; }
        //public double TaxOwed { get; }

    int IComparable.CompareTo(Object o)
    {
        int returnVal;
        TaxPayer2 temp = (TaxPayer2)o;
        if (this.taxOwed > temp.taxOwed)
            returnVal = 1;
        else if (this.taxOwed < temp.taxOwed)
                returnVal = -1;
        else returnVal = 0;
        return returnVal;
    }
}


class Driver
{
    static void Main()
    {

        TaxPayer2[] arrayTaxPayers = new TaxPayer2[10];

        for (int x = 0; x < 3; ++x)
        {
            Console.WriteLine("Enter SSN: ");
            string ssn = Console.ReadLine();

            Console.WriteLine("Enter Income: ");
            double income = Convert.ToDouble(Console.ReadLine());

            arrayTaxPayers[x] = new TaxPayer2(ssn, income);
        }

        for (int x = 0; x < 3; ++x)
        {
            Console.WriteLine("SSN {0} earned income of {1} and owes {2} in taxes.",
                arrayTaxPayers[x].Ssn, arrayTaxPayers[x].GrossIncome.ToString("C"), 
                arrayTaxPayers[x].TaxOwed.ToString("C"));

        }

        Array.Sort(arrayTaxPayers);
        Console.WriteLine("Sorted By Tax Owed:");
        for(int x=0; x<3; ++x)
        {
            Console.WriteLine("SSN {0} earned income of {1} and owes {2} in taxes.",
                arrayTaxPayers[x].Ssn, arrayTaxPayers[x].GrossIncome.ToString("C"),
                arrayTaxPayers[x].TaxOwed.ToString("C"));
        }

    }//end of Main
}//end of Driver
纳税人类别2:i可比较
{
公共字符串SSN{get;set;}
公共双收入{get;set;}
//公共双重征税{get;}
int IComparable.CompareTo(对象o)
{
int returnVal;
纳税人2临时=(纳税人2)o;
如果(this.taxown>temp.taxown)
returnVal=1;
否则如果(本税<临时税)
returnVal=-1;
else-returnVal=0;
返回值;
}
}
类驱动程序
{
静态void Main()
{
纳税义务人2[]阵列纳税义务人=新纳税义务人2[10];
对于(int x=0;x<3;++x)
{
Console.WriteLine(“输入SSN:”);
字符串ssn=Console.ReadLine();
Console.WriteLine(“输入收入:”);
double income=Convert.ToDouble(Console.ReadLine());
arrayTaxPayers[x]=新纳税义务人2(ssn,收入);
}
对于(int x=0;x<3;++x)
{
Console.WriteLine(“SSN{0}收入为{1}并欠{2}税。”,
arrayTaxPayers[x]。Ssn,arrayTaxPayers[x]。GrossIncome.ToString(“C”),
arrayTaxPayers[x].TaxOwed.ToString(“C”);
}
Array.Sort(arrayTaxPayers);
Console.WriteLine(“按所欠税款排序:”);

对于(int x=0;x基本骨架应该是这样的:

class TaxPayer2 : IComparable
{
  //properties 

  //methods

  //IComparable implementation
}

class Driver
{
    static void Main()
    {
      //the code you have in Main() here
    }
}

prabably一书首先展示的是类声明(没有IComparable实现)然后他们向你展示了如何在同一个类中实现它,这就是为什么你认为这本书展示了两个不同的类,而只有一个和相同的类。为了说明一个明显的事实,你不能在同一个名称空间中有两个相等的类声明。

你不能对同一个类有两个或多个定义(在你的例子中是TaxPayer2)在同一名称空间中,除非和直到它们是分部类。

2类TaxPayer2的声明不起作用,你确定第二个类中的代码不应该是第一个类的一部分吗?书中的类标记为
partial
?我尝试将驱动程序代码添加到第一个程序中,但它显示了相同的错误Alex说(第二类应该是第一类的一部分),但也删除了第二类(taxpayer2:icomparable)的定义,并尝试一下。