我最近开始学习C#,但我有一些C ++的背景知识。 我想知道我会怎样做
class employee
{
public:
....
... methods ...
....
private:
....
... private member variables ....
....
}
我尝试在C#中这样做,但是它不喜欢“public:...”和“private:...”来制作公共或私人之后的所有内容。
另外,我已经看到了这个在C#中获取和设置的东西,所以你不需要做一个私有成员变量的方法,然后创建一个函数来返回该变量?
虽然我在这,但是如何在C#中创建子类?在C#中,新类在不同的选项卡中打开,所以我对如何操作感到困惑。
答案 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... }
对于属性,请将它们视为自动实现的set
和get
方法,您可以选择自行实现或让编译器实现它们。如果你想自己实现它们,你仍然需要字段来存储你的数据,如果你把它留给编译器,它也会生成字段。
继承与将内容放在同一个文件中的情况完全相同(对于更大的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)
不,你不能。在C#中,您必须为每个成员指定访问者。
不,你没有,它被称为Property
写出其他类
类SomeClass {
} class SubClass:SomeClass {}
答案 3 :(得分:3)
在C#中,您必须为每个方法或属性指定访问说明符。
如果未指定,则采用默认访问说明符。
类成员的默认访问说明符是私有的,类外的默认访问说明符是内部
class MyClass{ //MyClass will be internal
int MyProperty {get; set;} // MyProperty will be privare
}