C#,类中的原始类错编程实践?

时间:2011-09-21 08:37:31

标签: c#

我在学习C#时一直在关注研讨会。

其中一个课程练习是创建一个程序,将你的名字输出到控制台。

我已经开发了这个。

我的问题是......是否正在将其他课程纳入主课程中?我想在开始养成习惯之前我会问!我应该创建一个单独的类,因为我想将它扩展为实际的项目吗?

class Exercise1
{
    static void Main()
    {
        Character myCharacter = new Character();
        myCharacter.name = "tekaC";

        Console.WriteLine("Hello {0}!", myCharacter.name); //Prints the character's name into the Console output
    }
}
class Character
{
    public string name;
}

3 个答案:

答案 0 :(得分:6)

目前尚不清楚你的意思是:

  • 将一个类嵌套在另一个
  • 在同一源文件中保留两个顶级类

后者几乎总是一个坏主意 - 类Foo应该几乎总是在Foo.cs中声明,以便于查找。这里有 例外 - 例如,在Noda Time中我在一个名为Delegates.cs的文件中声明了几个委托,但这是一个特殊情况 - 没有涉及代码,一旦你知道如果你想找到任何代表,你可以查看Delegates.cs,没关系。

如果使用得当,嵌套类很好 - 但我会默认来创建新的顶级类。我很少使用嵌套类,除非它们意味着只是 包含类感兴趣的实现细节。我通常将它们设为私有,正是因为这个原因 - 没有项目中的其余代码需要了解它们。

关于您当前代码的另一点:您有一个公共字段,这通常是不良的封装。您应该使用属性,以便隐藏实现细节。您可能希望为Character类提供一个构造函数,该构造函数在构造时也采用名称 - 然后您可以创建基础字段readonly。例如:

// You may not want it to be internal, and you may not want it to be sealed -
// but you should think about both decisions.
internal sealed class Character
{
    private readonly string name;

    internal Character(string name)
    {
        if (name == null)
        {
            throw new ArgumentNullException("name");
        }
        this.name = name;
    }

    internal string Name { get { return name; } }
}

答案 1 :(得分:0)

你根本没有把课程放在另一个班级!你刚刚在同一个文件中放了两个类,这实际上是个人偏好。 (我有一些文件有5-6个相互关联的类编辑:omg Jon Skeet不同意我哦noez!:))。

因此,在您的示例中,您有2个类。

答案 2 :(得分:0)

你的意思是这两个类在一个文件中吗?

每个文件一个类通常被认为是这样做的方式,并且在某些语言中是必要的。

相关问题