1

Microsoft.NET開発を読み始めたところです。VBやC#を使用したレッスン/ラボが含まれています。これで、VBを使用して最初のラボを完了し、C#で実行します。私はすべてを正確にコピーしました(私はかなり確信しています)が、私は得ます

予期されるクラス、デリゲート、列挙型、インターフェイス、または構造体

私はCMDを取得する必要があると思います

トニー・アレン、32歳

誰かがここで私の問題を指摘できますか?私はバックエンドWeb開発者(PHP)なので、コーディングについて知っています。この言語は初めてです(:

以下のコードを編集する場合は、どのような変更を加えたのか、なぜ変更したのかを教えてください。説明が多ければ多いほど良いです!

ありがとう!

C#

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

namespace ConsoleApplication1
{
    struct Person{
        public string firstName;
        public string lastName;
        public int age;
    }
    public Person(string _firstName, string _lastName, int _age){
        firstName = _firstName;
        lastName = _lastName;
        age = _age;
    }
    public override string toString(){
        return firstName + " " + lastName + ", age " + age;
    }
    class Program{
        static void Main(string[] args){
            Person p = new Person("Tony", "Allen", 32);
            Console.WriteLine(p);
        }
    }
}
4

4 に答える 4

6

構造体初期化子を構造体定義に移動します。他のメンバーと同じ。

  struct Person{
        public string firstName;
        public string lastName;
        public int age;

        public Person(string _firstName, string _lastName, int _age)
        {
            firstName = _firstName;
            lastName = _lastName;
            age = _age;
        }

        public override string ToString(){
            return firstName + " " + lastName + ", age " + age;
        }
    }

C# では、C++ で行われるのとは異なり、クラス/構造体定義内でメンバーを宣言します。C# のクラスと構造体に関するこの msdn ガイドをお読みください。

于 2012-12-18T10:04:07.993 に答える
1

また、ToString は間違った方法で大文字化されています。

public override string ToString()
于 2012-12-18T10:06:58.860 に答える
1
  1. コンストラクターとメソッドは、クラス/構造体内で宣言する必要があります。

    struct Person
    {
        public string firstName;
        public string lastName;
        public int age;
    
        public Person(string _firstName, string _lastName, int _age)
        {
            firstName = _firstName;
            lastName = _lastName;
            age = _age;
        }
    
        public override string toString()
        {
            return firstName + " " + lastName + ", age " + age;
        }
    }
    
  2. toStringオーバーライドする方法はありませんが、ToString

    struct Person
    {
        //...
    
        public override string ToString()
        {
            return firstName + " " + lastName + ", age " + age;
        }
    }
    
于 2012-12-18T10:07:47.777 に答える
0
using System;

namespace Programs
{
    struct Person{
        public string firstName;
        public string lastName;
        public int age;

        public Person(string _firstName, string _lastName, int _age){
        firstName = _firstName;
        lastName = _lastName;
        age = _age;
    }

        public  string toString()
        {
            return firstName + " " + lastName + ", age " + age;
        }
    }


    class Program{
        static void Main(string[] args){
            Person p = new Person("Tony", "Allen", 32);
            Console.WriteLine(p.toString());
        }
    }
}
  • 構造体でメソッドを使用toString()します。上書きする必要はありません。
  • 使用しConsole.WriteLine(p.toString());ないConsole.WriteLine(p);
  • class基本的な学習と型付けができる優れた C# の本を入手してくださいstruct
于 2012-12-18T10:07:38.353 に答える