0

SalesPersonオブジェクトからfullNameMethodメイン プログラムに文字列を返そうとしていますが、うまくいきません。私は何を間違っていますか?

class SalesPerson
{
    string firstName, lastName;
    public string FirstName { get { return firstName; } set { firstName = value; } }
    public string LastName { get { return lastName; } set { lastName = value; } }

    public SalesPerson(string fName, string lName)
    {
        firstName = fName;
        lastName = lName;
    }

    public string fullNameMethod()
    {
        string x = firstName + " " + lastName;
        return x;
    }
}

class Program
{
    static void Main(string[] args)
    {
        SalesPerson x = new SalesPerson("john", "Doe");
        Console.WriteLine("{0}", x.fullNameMethod);
    }
}
4

5 に答える 5

15

現在、プロパティなどのメソッドにアクセスしようとしています

Console.WriteLine("{0}",x.fullNameMethod);

そのはず

Console.WriteLine("{0}",x.fullNameMethod());

または、次を使用してプロパティに変換することもできます

public string fullName
{
   get
   {
        string x = firstName + " " + lastName;
        return x;
   }
}
于 2012-07-03T19:13:23.910 に答える
2

最後の () を忘れました。これは変数ではなく関数であり、パラメーターがない場合でも、最後に () が必要です。

将来のコーディング プラクティスでは、コードを少し変更することを強くお勧めします。

 public string LastName
 { get { return lastName; } set { lastName = value; } }

ここで何らかの処理が行われると (ありがたいことに、ここでは行われません)、非常に混乱します。コードを他の人に渡す場合は、次のことをお勧めします。

public string LastName
{
  get
  {
     return lastName;
  }
  set
  {
     lastName = value;
  }
}

かなり長くなりますが、コードの膨大なセクションをざっと見ると、はるかに読みやすくなります。

于 2012-07-03T19:28:01.723 に答える
1

そのための方法を持っている必要はありません。代わりに、次のようなプロパティを作成できます。

class SalesPerson
{
    string firstName, lastName;
    public string FirstName { get { return firstName; } set { firstName = value; } }
    public string LastName { get { return lastName; } set { lastName = value; } }
    public string FullName { get { return this.FirstName + " " + this.LastName; } }
}

クラスは次のように短縮することもできます。

class SalesPerson
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string FullName { 
       get { return this.FirstName + " " + this.LastName; } 
    }
}

その後、他のプロパティと同じようにプロパティにアクセスできます。

class Program
{
    static void Main(string[] args)
    {
        SalesPerson x = new SalesPerson("John", "Doe");
        Console.WriteLine(x.FullName); // Will print John Doe
    }
}
于 2012-07-03T19:15:23.330 に答える
0

x.fullNameMethod()メソッドを呼び出すために使用します。

于 2012-07-03T19:13:24.683 に答える
-2

これらの答えは複雑すぎます

彼がメソッドを書いた方法は素晴らしいです。問題は、彼がメソッドを呼び出した場所です。彼はメソッド名の後にかっこを含めていなかったため、コンパイラはメソッドではなく変数から値を取得しようとしていると判断しました。

Visual Basic とDelphiでは、これらの括弧はオプションですが、C# では必須です。したがって、元の投稿の最後の行を修正するには:

Console.WriteLine("{0}", x.fullNameMethod());
于 2014-07-19T21:10:04.593 に答える