C# 类(Class)
类就像特定对象的蓝图。在现实世界中,每个对象都有一些颜色,形状和功能-例如,豪华跑车法拉利。法拉利是豪华车类型的对象。豪华车是一门表明某些特性的类,例如速度,颜色,形状,内饰等。因此,制造满足这些要求的汽车的任何公司都是豪华车类型的对象。例如,宝马,兰博基尼,凯迪拉克的每辆汽车都是“豪华车”类的对象。在这里,“豪华车”是一类,每一辆实物汽车都是豪华车类的对象。
同样,在面向对象的程序设计中,类定义了一些属性,字段,事件,方法等。类定义了数据的种类及其对象将具有的功能。
类使您可以通过对其他类型,方法和事件的变量进行分组来创建自定义类型。
在C#中,可以使用 class 关键字定义一个类。
public class MyClass { public string myField = string.Empty; public MyClass() { } public void MyMethod(int parameter1, string parameter2) { Console.WriteLine("First Parameter {0}, second parameter {1}", parameter1, parameter2); } public int MyAutoImplementedProperty { get; set; } private int myPropertyVar; public int MyProperty { get { return myPropertyVar; } set { myPropertyVar = value; } } }
下图显示了C#类的重要构建块。
C#访问修饰符
访问修饰符应用于类,方法,属性,字段和其他成员的声明。它们定义了类及其成员的可访问性。公共,私有,受保护和内部是C#中的访问修饰符。我们将在关键字部分中对此进行了解。
C# 字段
该字段是一个具有值的类级变量。通常,字段成员应具有私有访问修饰符并与属性一起使用。
C#构造函数
一个类可以具有参数化或无参数的构造函数。创建类的实例时,将调用构造函数。可以使用访问修饰符和类名称来定义构造函数:
<access modifiers> <class name>(){ }
class MyClass { public MyClass() { } }
C#方法
可以使用以下模板定义方法:
{access modifier} {return type} MethodName({parameterType parameterName})
public void MyMethod(int parameter1, string parameter2) { // 在此处编写您的方法代码。 }
属性
可以使用getter和setter定义属性,如下所示:
private int _myPropertyVar; public int MyProperty { get { return _myPropertyVar; } set { _myPropertyVar = value; } }
属性封装了一个私有字段。它提供了getters(get {})来检索基础字段的值,并提供setters(set {})来设置基础字段的值。在上面的示例中,_myPropertyVar是一个私有字段,无法直接访问。只能通过MyProperty访问。因此,MyProperty封装了_myPropertyVar。
您还可以在get和set中应用一些其他逻辑,如以下示例所示。
private int _myPropertyVar; public int MyProperty { get { return _myPropertyVar / 2; } set { if (value > 100) _myPropertyVar = 100; else _myPropertyVar = value; ; } }
自动实现属性
从C#3.0开始,如果您不想在get或set中应用某些逻辑,则可以轻松进行属性声明。
以下是自动实现的属性的示例:
public int MyAutoImplementedProperty { get; set; }
请注意,上述属性示例中没有私有后备字段。支持字段将由编译器自动创建。您可以像使用类的常规属性一样使用自动化属性。当属性访问器中不需要其他逻辑时,自动实现的属性只是为了轻松声明属性。
命名空间
命名空间是一组相关类和命名空间的容器。命名空间还用于为命名空间名称内的类提供唯一的名称。命名空间和类使用点(.)表示。
在C#中,可以使用 namespace 关键字定义命名空间。
namespace CSharpTutorials { class MyClass { } }
在上面的示例中,MyClass的完全限定类名是 CSharpTutorials.MyClass.
命名空间可以包含其他命名空间。内部命名空间可以使用(.)分隔。
namespace CSharpTutorials.Examples { class MyClassExample { } }
在上面的示例中,MyClassExample 的完全限定的类名称为 CSharpTutorials.Examples.MyClassExample。