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);
  • 获得一本可以基本学习classstruct键入的好 C# 书籍。
于 2012-12-18T10:07:38.353 回答