需要我的代码的帮助,不确定如何修复会返回错误CS0102 C#类型已经包含定义行91和103 编写一个名为GirlScout的C#控制台应用程序,其中包含有关GirlScout的名称,部队编号和欠款的字段。包括一个恒定的静态字段,该字段包含GirlScout座右铭的最后一个单词(“遵守Girl Scout法则”)。包括重载的构造函数,使您可以将所有三个非静态GirlScout字段设置为默认值或参数值。还包括每个字段的属性。创建一个名为DemoScouts的类,该类实例化两个GirlScout对象并显示其值。创建一个对象以使用默认构造函数,创建另一个对象以使用需要参数的构造函数。同时显示GirlScout座右铭
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoScouts
{
class Program
{
static void Main()
{
GirlScout scout1 = new GirlScout("Carina", 100, 12.50);
GirlScout scout2 = new GirlScout("Jolene", 103, 23.56);
GirlScout scout3 = new GirlScout("Karen", 105, 34.43);
GirlScout scout4 = new GirlScout("Kim", 145, 5.25);
GirlScout scout5 = new GirlScout("Heather", 200, 1.50);
GirlScout scout6 = new GirlScout();
GirlScout objScout1 = new GirlScout();
objScout1.Name = "YYYYY";
objScout1.TroopNumber = "1211";
objScout1.DuesOwed = 2111.12;
GirlScout objScout2 = new GirlScout("XXX", "232", 123.23);
//Displaying Scout 1
Console.WriteLine("Scout 1");
Console.WriteLine("Name : " + objScout1.Name);
Console.WriteLine("Troop Number : " + objScout1.TroopNumber);
Console.WriteLine("Dues Owed : " + objScout1.DuesOwed);
Console.WriteLine("Motto : " + GirlScout.motto);
Console.WriteLine("\n");
//Displaying Scout 2
Console.WriteLine("Scout 2");
Console.WriteLine("Name : " + objScout2.Name);
Console.WriteLine("Troop Number : " + objScout2.TroopNumber);
Console.WriteLine("Dues Owed : " + objScout2.DuesOwed);
Console.WriteLine("Motto : " + GirlScout.motto);
Console.Read();
}
}
class GirlScout
{
private string name;
private string TroopNumber;
private double DuesOwed;
public static string motto = " Girl Scout Motto";
private string v1;
private int v2;
private double v3;
private string troopNumber;
private double duesOwed;
public GirlScout()
{
name = string.Empty;
troopNumber = string.Empty;
duesOwed = 0.0;
}
public GirlScout(string strName, string strNumber, double dues)
{
name = strName;
troopNumber = strNumber;
duesOwed = dues;
}
public GirlScout(string v1, int v2, double v3)
{
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
}
public string Name
{
get { return name; }
set { name = value; }
}
public string TroopNumber
{
get { return troopNumber; }
set { troopNumber = value; }
}
public double DuesOwed
{
get { return duesOwed; }
set { duesOwed = value; }
}
}
}
答案 0 :(得分:4)
您错误地定义了两个字段troupNumber
和duesOwned
,首先使用大写字母-因此它们与稍后定义的属性冲突-然后使用小写正确。
只是省略
private string TroopNumber;
private double DuesOwed;
在name
和motto
之间,一切都很好。
请注意,您可以使用自动属性,并通过编写以下内容完全跳过这些字段:
public string TroupNumber { get; set; }
代替
private string troupNumber;
public string TroupNumber
{
{ get { return troupNumber; }
{ set { troupNumber = value; }
}
作为旁注:通过第二个非空构造函数,看起来v1
,v2
和v3
与name
,troopNumber
相同和duesOwed
,唯一的区别是v2
是一个整数而不是字符串。
使用此构造函数填充v字段时,但是对于使用带有v参数的构造函数创建的对象,输出的名称,TroupNumber和DuesOwed将不显示任何内容。
可以通过将构造函数定义为
来补救public void GirlScout(string name, int troupNumber, double duesOwed)
{
Name = name;
TroupNumber = troupNumber.ToString();
DuesOwed = duesOwed;
}
答案 1 :(得分:0)
您还可以添加具有默认值的方法,并将其从构造函数中删除:
public void GirlScout(string name = string.Empty, int troupNumber = 0, double duesOwed = 0.0)
{
Name = name;
TroupNumber = troupNumber.ToString();
DuesOwed = duesOwed;
}