首页 > 代码库 > 类与对象
类与对象
C#中的基本类型都是值类型是在栈中创建的,而对象是引用类型是在堆中创建的,需要使用new关键字。
构造方法:
构造方法与类同名,没有返回类型。
This关键字:
限定被相似的名称隐藏的成员,例如:
public Employee(string name, string alias) { // Use this to qualify the fields, name and alias: this.name = name; this.alias = alias; }
将对象作为参数传递到其他方法
Class myClass { Public void foo(OtherClass otherObject) { otherObject.Bar(this); } }
有一个myClass.foo的方法,在方法中调用otherObject.Bar方法,传入对myClass当前实例的引用。这样Bar方法就可以使用当前myClass当前实例的公开方法和成员了。
声明索引器,例如:
public int this[int param] { get { return array[param]; } set { array[param] = value; } }
由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。 在静态方法中引用 this 是错误的
从重载构造方法中调用另一个:
Class myClass { Public myCall (int i) { // } Public myCall ():this(42) { // } }这个例子中,默认构造方法使用this关键字调用参数为整数的重载构造方法
静态成员:
非静态类可以包含静态的方法、字段、属性或事件。 即使没有创建类的实例,也可以调用该类中的静态成员。 始终通过类名而不是实例名称访问静态成员。 无论对一个类创建多少个实例,它的静态成员都只有一个副本。 静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量(除非在方法参数中显式传递)。
更常见的做法是声明具有一些静态成员的非静态类,而不是将整个类声明为静态类。 静态字段有两个常见的用法:一是记录已实例化对象的个数,二是存储必须在所有实例之间共享的值。
静态方法可以被重载但不能被重写,因为它们属于类,不属于类的任何实例。
虽然字段不能声明为 static const,但 const 字段的行为在本质上是静态的。 这样的字段属于类型,不属于类型的实例。 因此,可以同对待静态字段一样使用 ClassName.MemberName 表示法来访问 const 字段。 不需要对象实例。
C# 不支持静态局部变量(在方法范围内声明的变量)。
instances
public class Cat { public Cat() { instances++; } public static void HowManyCats() { Console.WriteLine("{0} cats adopted", instances); } private static int instances = 0; } public class Tester { static void Main() { Cat.HowManyCats(); Cat frisky = new Cat(); Cat.HowManyCats(); Cat whiskers = new Cat(); Cat.HowManyCats(); Console.ReadLine(); } }如果声明了静态构造方法,必须保证静态构造方法在实例创建前运行。静态构造方法前没有访问修饰符,且不能访问非静态成员变量,故上例中instance 也是静态变量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。