8.7 Classes

博客介绍了类声明定义新引用类型,类可继承和实现接口。类成员包括常量、字段等,每个成员有相关访问权限,有五种可能形式,如public、protected等。还通过示例展示了类中各类成员的定义及使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8.7 Classes
Class declarations define new reference types. A class can inherit from
another class, and can implement
interfaces.
Class members can include constants, fields, methods, properties, events,
indexers, operators, instance
constructors, destructors, static constructors, and nested type
declarations. Each member has an associated
accessibility (§10.5), which controls the regions of program text that are
able to access the member. There
are five possible forms of accessibility. These are summarized in the table
below.
Form Intuitive meaning
public Access not limited
protected Access limited to the containing class or types derived from the
containing class
internal Access limited to this program
protected
internal
Access limited to this program or types derived from the containing class
private Access limited to the containing type
The example
using System;
class MyClass
{
public MyClass() {
Console.WriteLine("Instance constructor");
}
public MyClass(int value) {
MyField = value;
Console.WriteLine("Instance constructor");
}
~MyClass() {
Console.WriteLine("Destructor");
}
public const int MyConst = 12;
public int MyField = 34;
public void MyMethod(){
Console.WriteLine("MyClass.MyMethod");
}
public int MyProperty {
get {
return MyField;
}
set {
MyField = value;
}
}
public int this[int index] {
get {
return 0;
}
set {
Console.WriteLine("this[{0}] = {1}", index, value);
}
}
public event EventHandler MyEvent;
public static MyClass operator+(MyClass a, MyClass b) {
return new MyClass(a.MyField + b.MyField);
}
internal class MyNestedClass
{}
}
shows a class that contains each kind of member. The example
class Test
{
static void Main() {
// Instance constructor usage
MyClass a = new MyClass();
MyClass b = new MyClass(123);
// Constant usage
Console.WriteLine("MyConst = {0}", MyClass.MyConst);
// Field usage
a.MyField++;
Console.WriteLine("a.MyField = {0}", a.MyField);
// Method usage
a.MyMethod();
// Property usage
a.MyProperty++;
Console.WriteLine("a.MyProperty = {0}", a.MyProperty);
// Indexer usage
a[3] = a[1] = a[2];
Console.WriteLine("a[3] = {0}", a[3]);
// Event usage
a.MyEvent += new EventHandler(MyHandler);
// Overloaded operator usage
MyClass c = a + b;
}
static void MyHandler(object sender, EventArgs e) {
Console.WriteLine("Test.MyHandler");
}
internal class MyNestedClass
{}
}
shows uses of these members.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值