C#程序因错误而出现问题

时间:2018-08-26 23:39:27

标签: c#

需要我的代码的帮助,不确定如何修复会返回错误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; }
        }

    }
}

2 个答案:

答案 0 :(得分:4)

您错误地定义了两个字段troupNumberduesOwned,首先使用大写字母-因此它们与稍后定义的属性冲突-然后使用小写正确。

只是省略

private string TroopNumber;
private double DuesOwed;

namemotto之间,一切都很好。

请注意,您可以使用自动属性,并通过编写以下内容完全跳过这些字段:

public string TroupNumber { get; set; }

代替

private string troupNumber;

public string TroupNumber
{
  { get { return troupNumber; }
  { set { troupNumber = value; }
}

作为旁注:通过第二个非空构造函数,看起来v1v2v3nametroopNumber相同和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;
}