1

我是 c# 的新手,我一直在玩弄它,并被困在从方法中返回有用的东西。任何帮助都会很棒。

我现在有这个:

Form1.cs

Animal NewAnimal = new Animal("Jack", "Ramp");

Animal.cs

public Animal(string Fname, string Lname)
        {
            if (Fname == "Jack" | Lname == "Ramp")
            {
                string FullName;
                FullName = Fname + " " + Lname;
                //return FullName; <--- This is what i tried but didn't work--->
            }
        }
        //return FullName; <--- And Also tried this it didn't work --->

也许从我尝试过的那些我做错了什么?如何将 FullName 返回到 Form1.cs 并将其显示在标签中?

4

6 回答 6

5

你想要这样的东西:

public class Animal
{
    public Animal(string fName, string lName)
    {
        this.FName = fName;
        this.LName = lName;
    }
    public string FName {get;set;}
    public string LName {get;set;}
    public string FullName
    {
        get
        { 
            return String.Format("{0} {1}", FName,LName);
        }
    }
}
于 2013-09-21T01:58:54.270 回答
2

您正在尝试从构造函数返回一个值...

而是定义一个方法。

public string FullName(string Fname, string Lname)
{
if (Fname == "Jack" || Lname == "Ramp")
   {

                return Fname + " " + Lname;

    }

return "";

}
于 2013-09-21T01:56:33.197 回答
2

您拥有的方法称为Constructor. 当您要创建对象的新实例时调用它。尽管它在定义中没有返回类型,但它“返回”了对象的一个​​新实例(尽管您无法真正控制它)。

您所期望的是拥有另一个将返回值的公共方法或属性。

public class Animal
{
    public string Fullname {get; set;}

    public Animal(string Fname, string Lname)
    {
        if (Fname == "Jack" || Lname == "Ramp")
        {
            FullName = Fname + " " + Lname;
        }
}

然后使用以下内容:

Animal NewAnimal = new Animal("Jack", "Ramp");
var firstName = NewAnimal.FullName;
于 2013-09-21T01:56:47.127 回答
2

在您的情况下,我将回顾在 C# 中指定类型的基础知识。

类型是用户定义的(即您是用户)字段、属性、方法和一些其他定义数据和行为的构造的集合。

如果您的特殊情况,您需要考虑您正在实施的行为。

  • 将字符串馈送到新的Animal
  • Animal

考虑以下代码:

public class Animal { 
  public string FullName { get; }

  public Animal(string firstName, string lastName) { 
    this.FullName = firstName + " " + lastName; 
  }
}

然后,您可以检索Animal您实例化的名称。

var animal = new Animal("Bob", "Smith"); 
// ... later
if (animal.FullName.Equals("Jack Ramp", StringComparison.CurrentCulture)); 
textBox.Text = animal.FullName; 

如果这让您有点迷失,我建议您在 Microsoft Types Overview中查看(并实际处理包含的示例) 。这篇文章有相当多的信息,但都是关于 C# 类型系统的重要信息。

于 2013-09-21T02:07:14.367 回答
1

Yaur 的答案会起作用,但为了更接近您似乎要求的内容,我会这样做(注意:这是对 Yaur 代码的修改)

public class Animal
{
    public Animal(string fName, string lName)
    {
        this.FName = fName;
        this.LName = lName;
    }
    public string FName {get;set;}
    public string LName {get;set;}
    public override string ToString()
    {
        return String.Format("{0} {1}", FName,LName);
    }
}
于 2013-09-21T02:29:14.493 回答
0

你不能从构造函数返回一些东西。您可以像这样声明一个属性或一个公共字段

class Animal {

public:
   string FullName;
    .....
}

然后你可以FullName通过NewAnimal.FullName.

于 2013-09-21T01:55:25.243 回答