C#如何在C ++中使公共/私有一切?

时间:2012-09-07 05:18:49

标签: c# subclass private public

我最近开始学习C#,但我有一些C ++的背景知识。 我想知道我会怎样做

class employee
{
    public:
       ....
  ... methods ...
       ....

    private:
       ....
    ... private member variables ....
       ....
}

我尝试在C#中这样做,但是它不喜欢“public:...”和“private:...”来制作公共或私人之后的所有内容。

另外,我已经看到了这个在C#中获取和设置的东西,所以你不需要做一个私有成员变量的方法,然后创建一个函数来返回该变量?

虽然我在这,但是如何在C#中创建子类?在C#中,新类在不同的选项卡中打开,所以我对如何操作感到困惑。

4 个答案:

答案 0 :(得分:16)

你不能像在C ++中那样在C#中创建“块”公共或私有,你必须为每个成员添加可见性(和实现)。在C ++中,您通常会这样做;

public:
  memberA();
  memberB();
private:
  memberC();

...并在其他地方实施您的成员,而在C#中,您需要这样做;

public  memberA() { ...implement your function here... }
public  memberB() { ...implement your function here... }
private memberC() { ...implement your function here... }

对于属性,请将它们视为自动实现的setget方法,您可以选择自行实现或让编译器实现它们。如果你想自己实现它们,你仍然需要字段来存储你的数据,如果你把它留给编译器,它也会生成字段。

继承与将内容放在同一个文件中的情况完全相同(对于更大的C ++项目来说,这可能不是一个好主意)。像往常一样继承,只要你在同一个命名空间或导入基类的命名空间,你就可以无缝地继承;

using System.Collections;  // Where IEnumerable is defined

public class MyEnumerable : IEnumerable {  // Just inherit like it 
   ...                                     // was in the same file.
}

答案 1 :(得分:4)

1)C#中的访问修饰符与C ++不同,因为您需要为每个类成员明确指定一个。

http://msdn.microsoft.com/en-us/library/wxh6fsc7(v=vs.71).aspx

2)你提到的get,set是指C#Properties:

class User
{
    private string userName;

    public string UserName
    {
        get { return this.userName; }
        set { this.userName = value; }
    }
}

请注意,您还可以使用自动实现的属性http://msdn.microsoft.com/en-us/library/bb384054.aspx

3)C#中的子类化是这样完成的

class Manager : Employee 
{
    //implementation goes here as usual
}

答案 2 :(得分:3)

  1. 不,你不能。在C#中,您必须为每个成员指定访问者。

  2. 不,你没有,它被称为Property

  3. 写出其他类

    类SomeClass {

    } class SubClass:SomeClass {}

答案 3 :(得分:3)

在C#中,您必须为每个方法或属性指定访问说明符。 如果未指定,则采用默认访问说明符。
类成员的默认访问说明符是私有的,类外的默认访问说明符是内部

class MyClass{ //MyClass will be internal
     int MyProperty {get; set;} // MyProperty will be privare
}