1

わかった。コンストラクタを把握しようとしています。この従業員をストームトルーパーと名付けたい。でも呼ばないようです。コンストラクターを正しく読んでいないのか、それとも何なのかはわかりませんが、ここに私が持っているものがあります

どんな助けでも大歓迎です。これは私が理解している非常に初心者の質問です。

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

namespace ConsoleApplication297
{
public class Program
{
    static void Main(string[] args)
    {
        Employee s = new Employee(name);
        Console.WriteLine(s.Name);
        Console.ReadKey();
    }

    public class Employee
    {
        private string name;

        public string Name
        {
            get
            {
                return name;
            }
        }
        public Employee(string name)
        {
            name = Stormtrooper;
        }
    }
}

}

4

4 に答える 4

7

コンストラクターで、ローカル変数をに設定していますStormTrooper(どこにも宣言されていないため、これは有効ではありません。文字列にしたい場合は、引用符で囲む必要があります"StormTrooper") 。

これは次のようになります。

public Employee(string name)
{
      this.name = name;
}

thisキーワードはクラスのインスタンスを表し、プライベート変数をnamedで渡された変数に設定しnameますname

私は通常、プライベート変数に soprivate string _nameのように名前を付けるので、次のようなコンストラクターを持つことができます。

public Employee(string name)
{
      _name = name;
}
于 2013-08-13T02:19:25.493 に答える
4

文字列を Employee に送信する必要があります。

このコードで名前を定義したことがありません

Employee s = new Employee(name);

代わりに試してみてください

String name = "Stormtrooper";
Employee s = new Employee(name);

または、変数を作成せずに文字列を直接送信することもできます。クラスを構築するだけの場合は、変数を初期化して保存する必要はありません。

Employee s = new Employee("Stormtrooper");

PostMan のおかげで、実際のコンストラクターも修正されました

public Employee(string name)
{
this.name = name;
}
于 2013-08-13T02:19:06.657 に答える
2

string次のように、コンストラクターにa を渡す必要があります。

Employee s = new Employee("Stormtrooper");

また、クラス メンバー変数とコンストラクターのパラメーターを同じもの (nameこの例では) と呼ぶことは、コードを読んだり維持したりする人々を混乱させるため、一般的には悪い考えです。代わりに、次のNameようにプロパティ value を使用します。

public Employee(string name)
{
    Name = Stormtrooper;
}

注: 多くの場合、次のように、クラス メンバー変数にアンダースコア ( _) またはその他のプレフィックス ( など) が表示されます。my

public class Employee
{
    private string _name;

    public string Name
    {
        get
        {
            return _name;
        }
    }
    public Employee(string name)
    {
        _name = Stormtrooper;
    }
}

繰り返しになりますが、これにより、一般に、コンストラクターのパラメーターからプロパティ名から変数をすばやく識別することが容易になります。

于 2013-08-13T02:23:43.107 に答える
1

Microsoft のサイトにコンストラクターに関する公式の投稿があります- http://msdn.microsoft.com/en-us/library/vstudio/ace5hbzh.aspxコンストラクタ

于 2013-08-13T03:03:41.957 に答える