C#程序中的i可比较命名空间问题
我正在开发一个使用IComparable的程序,我在遵循书中的代码,但不清楚应该把它放在哪里。我把它放在我的驱动程序中,但在原始程序中,主类加了下划线,表示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 {
"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)的定义,并尝试一下。