关于传递构造函数参数的困难

时间:2014-06-23 22:27:34

标签: c# class argument-passing

这是一个班级的作业。

到目前为止,这是我的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Proj03
{
    class MyClass
    {
        public string MyClass(bool First, int Last)
        {

            if (First == true)
            {
                return "FirstName";
            }

            else if (Last == 3)
            {
                return "LastName";
            }

        }


    }

    class Program
    {
        static void Main(string[] args)
        {
            bool var1 = true;
            int var2 = 3;
            Console.WriteLine(new MyClass(var1)); //Line 34
            Console.WriteLine(new MyClass(var2)); //Line 35
            Console.WriteLine("Press any key to terminate.");
            Console.ReadKey();
        }//end main
    }//end class Program
}//end namespace

我遇到的问题有两个:

首先,第34行和第35行的错误一直表示" MyClass"中没有构造函数。这需要一个参数。因此,很容易推断出,哇,我需要一个可以在类中使用一个参数的构造函数。我可以使构造函数很好,但困难在于传递" var1"和" var2"。我相信我需要在这里通过引用。

其次,我认为我需要考虑到" var1"和" var2"是不同的变量类型。我真的不知道该怎么做。但这篇文章的主要问题是弄清楚第一个问题。

指导员给我们的限制是我们不允许在"程序"中更改任何内容。类。

所需的输出如下:

在此处显示您的名字 在这里显示你的姓氏 按任意键即可终止。

5 个答案:

答案 0 :(得分:1)

您可以像这样解决缺少的构造函数问题:

    public MyClass(bool First)
    {
        // your code here
    }

    public MyClass(int Last)
    {
        // your code here
    }

请注意,没有指定返回类型,因为构造函数没有返回值。这将允许您的构造函数调用成功运行。

答案 1 :(得分:1)

我可能不应该这样做,但是,嗯......这就是你想要实现的目标吗?

class MyClass
{
    private bool? _first;
    private int? _last;

    public MyClass(bool first)
    {
        _first = first;
    }

    public MyClass(int last)
    {
        _last = last;
    }

    public override string ToString()
    {
        if (_first != null)
            return "FirstName";

        if (_last != null)
            return "LastName";

        return String.Empty;
    }
}

答案 2 :(得分:0)

问题是由于您的类名和方法名称相同。你不能做这个。您班级中的任何属性或方法都不得与您的班级相同。

您的构造函数问题是由于您调用new MyClass(var1)。您没有在类中指定构造函数。这看起来像这样:

public class MyClass
{
    // This is a constructor that takes a parameter.
    public MyClass(string myString)
    {
    }

    // This is a constructor that takes 0 parameters.
    // This exists if you do not specifically declare a constructor.
    public MyClass()
    {
    }
}

答案 3 :(得分:0)

您在这里寻找的是构造函数重载。你应该创建一个接受bool作为参数的构造函数和另一个接受int的构造函数。

这是一项家庭作业,所以我不打算提供样本。但是,这应该足以让你开始。

祝你好运。

答案 4 :(得分:-1)

查看可选参数。使用它们,您可以在构造函数默认值中分配参数(与程序将发送的值不同)。然后,您的程序可以通过任一变量类型发送,并且不会因错误的参数数量或变量类型而抛出错误。