0

私はプログラミングにかなり慣れていないので、しばらくの間この質問に固執しています。インターネット全体でこの質問に対する答えを探しましたが、なぜそれが機能しないのかについてまだ困惑しています。コンパイラは、以下のコードには 4 つの引数を取るコンストラクタが含まれていないと言っていますか? なぜだか分からない?

コードは次のとおりです。

public class Users
{
    private int _ID;
    private string _FName;
    private string _LName;
    private string _Address;
    private string _Phone;

    public int ID
    {
        get { return _ID; }
    }

    public string FName
    {
        get { return _FName; }
    }

    public string LName
    {
        get { return _LName; }
    }

    public string Address
    {
        get { return _Address; }
    }

    public string Phone
    {
        get { return _Phone; }
    }
}

問題が発生しているコードは次のとおりです。

public static void Insert(string FName, string LName, string Address, string Phone)
{
    Users newUser = new Users(FName, LName, Address, Phone);
    newUser.Save();
}
4

5 に答える 5

5

4 つの引数を取るコンストラクターを宣言します。

class User
{
    public User(string firstName, string lastName, string address, string phone)
    {
       _fName = firstName;
       ....
    }
}

使用法:

User user = new User("Joe", ...);

または、パブリック セッターをクラス プロパティに追加してから、オブジェクト初期化子を使用します。

public string FirstName { get; set; } // notice public

使用法:

User user = new User { FirstName = "Joe", ... };
于 2013-03-03T01:33:56.240 に答える
2

書くときは、クラスnew Users(...)のコンストラクターを呼び出しています。Users定義していないため、デフォルトの引数は、使用したように4つではなく、ゼロの引数を取ります。

デフォルトのコンストラクターを使用して、オブジェクト初期化子でプロパティを設定できます。これを行うには、これを置き換えます。

Users newUser = new Users(FName, LName, Address, Phone);

これとともに:

Users newUser = new Users() { FName = FName, LName = LName, Address = Address, Phone = Phone };

または、次のように、4 つの引数を取るコンストラクターを追加することもできます。

public Users(string fName, string lName, string address, string phone)
{
    FName = fName;
    LName = lName;
    Address = address;
    Phone = phone;
}
于 2013-03-03T01:33:50.953 に答える
1

私は C# の経験があまりありませんが、あなたのクラスにはコンストラクターが宣言されていないようです。変数 FName、LName、Address、および Phone を宣言していますが、値を取得することはありません。

これをクラス Users の宣言の下に追加してみてください。

public Users(String fname, String lname, String address, String phone)
{
    FName = fname;
    LName = lname;
    Address = address;
    Phone = phone;
}

クラスの各インスタンス化は、ユーザーのコレクションではなく、単一のユーザーを表すため、「ユーザー」の名前を単に「ユーザー」に変更することを検討することもできます。

于 2013-03-03T01:47:21.473 に答える
1

コンストラクタが必要です。与えられていません。それは書かれなければなりません。

于 2013-03-03T01:48:45.430 に答える