-1

私はこの C# チュートリアルhttp://csharp-station.com/Tutorial/CSharp/Lesson20に従っていますが、これは初心者の質問です。

以下では、Customer publicの新しい Dictionary コレクションCustomersを作成していますが、静的クラスではありません。簡単な問題は、メソッドで行を使用できないことです。ここで何が欠けていますか?顧客も静的でなければなりませんか? Customersオブジェクトを作成できるようにするには、ここで何をすればよいでしょうか。customers.Addstatic void main

Dictionary<int, Customer> customers = new Dictionary<int, Customer>();

Customer cust1 = new Customer(1, "Cust 1");
Customer cust2 = new Customer(2, "Cust 2");
Customer cust3 = new Customer(3, "Cust 3");

customers.Add(cust1.ID, cust1);
customers.Add(cust2.ID, cust2);
customers.Add(cust3.ID, cust3);

foreach (KeyValuePair<int, Customer> custKeyVal in customers)
{
    Console.WriteLine(
        "Customer ID: {0}, Name: {1}",
        custKeyVal.Key,
        custKeyVal.Value.Name);
}
4

1 に答える 1

2

あなたのコードは正常に動作します。あなたが投稿したリンクを開くことができませんが、途中で何かを誤解していると思います。

静的コンテキストからクラスの非静的メンバーにアクセスすることはできません。説明させてください...

class Foo
{
    int id;
    static void doStuff()
    {
        id++; // <-- Error!
    }
}

しかし、これは問題ありません:

class Foo
{
    static void doStuff()
    {
        var fooBar = new Dictionary<Foo, Bar>(); // Create instance
        fooBar.Add(new Foo(), new Bar()); // No error :)
    }
}

さらに言えば、これもそうです (私がidのメンバーとして参照していることに注意してくださいfoo):

class Foo
{
    int id;
    static void doStuff()
    {
        var foo = new Foo(); // Create instance
        foo.id++; // No error :)
    }
}

プログラムクラスが次のようになっていることを確認してください...

public static class Program
{
    public static void Main()
    {
        Dictionary<int, Customer> customers = new Dictionary<int, Customer>();

        Customer cust1 = new Customer(1, "Cust 1");
        Customer cust2 = new Customer(2, "Cust 2");
        Customer cust3 = new Customer(3, "Cust 3");

        customers.Add(cust1.ID, cust1);
        customers.Add(cust2.ID, cust2);
        customers.Add(cust3.ID, cust3);

        foreach (KeyValuePair<int, Customer> custKeyVal in customers)
        {
            Console.WriteLine(
                "Customer ID: {0}, Name: {1}",
                custKeyVal.Key,
                custKeyVal.Value.Name);
        }
    }
}
于 2013-03-19T20:03:06.407 に答える