基于Microsoft Learn的C#学习(入门-程序构建基块)

参考文档:https://learn.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/program-building-blockshttps://learn.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/program-building-blocks

C#程序构建基块

本文内容

        成员

        字段

        方法

        其他函数成员

        表达式

        语句
 

此C#系列教程的前一篇文章中介绍的类型是使用一下构建基块生成的:

        成员,如属性、字段、方法和事件。

        表达式

        语句

成员

class的成员要么是静态成员,要么是实例成员。

静态成员属于类,而实例成员则属于对象(类实例)。

以下列表概述了类可以包含的成员类型。

        常量:与类相关联的常量值

        字段:与类关联的变量

        方法:类可执行的操作

        属性:与读取和写入类的已命名属性相关联的操作

        索引器:与将类实例编入索引(像处理数组一样)相关联的操作

        事件:类可以生成的通知

        运算符:类支持的转换和表达式运算符

        构造函数:初始化类实例或类本身所需的操作

        类型:类声明的嵌套类型

        终结器:永久放弃类的实例之前完成的操作

辅助功能

每个类成员都有关联的可访问性,用于控制能够访问成员的成员程序文本区域。

可访问性有六种可能的形式。

以下内容对访问修饰符进行了汇总。

        public:访问不受限制。

        private:访问仅限于此类。

        protected:访问仅限于此类或派生自此类的类。

        internal:仅可访问当前程序集(.exe或.dll).。

        protected internal:仅可访问此类、从此类中派生的类,或者同一程序集中的类。

        private protected:仅可访问此类或同一程序集中从此类中派生的类。

字段

字段是与类或类实例相关联的变量。

使用静态修饰符声明的字段定义的是静态字段。

静态字段只指明一个存储位置。

无论创建多少个类实例,永远只有一个静态字段副本。

不使用静态修饰符声明的字段定义的是实例字段。

每个类实例均包含相应类的所有实例字段的单独副本。

在以下示例中,每个Color类实例均包含R、G和B实例字段的单独副本,但只包含Black、White、Red、Green和Blue静态字段的一个副本:

public class Color
{
    public static readonly Color Black = new(0, 0, 0);
    public static readonly Color White = new(255, 255, 255);
    public static readonly Color Red = new(255, 0, 0);
    public static readonly Color Green = new(0, 255, 0);
    public static readonly Color Blue = new(0, 0, 255);
    
    public byte R;
    public byte G;
    public byte B;

    public Color(byte r, byte g, byte b)
    {
        R = r;
        G = g;
        B = b;
    }
}

可以使用readonly修饰符声明只读字段。

只能在字段声明期间或在同一个类的构造函数中向只读字段赋值。

方法

方法时实现对象或类可执行的计算或操作的成员。

静态方法时通过类进行访问。

实例方法是通过类实例进行访问

方法可能也包含一个参数列表,这些参数表示传递给方法的值或变量引用。

方法具有返回类型,它用于指定方法计算和返回的值的类型。

如果方法未返回值,则它的返回类型为void。

方法可能也包含一组类型参数,必须在调用方法时指定类型自变量,这一点与类型一样。

与类型不同的是,通常可以根据方法调用的自变量推断出类型自变量,无需显示指定。

在声明方法的类中,方法的签名必须是唯一的。

方法签名包含方法名称、类型参数数量以及参数的数量、修饰符和类型。

方法签名不包含返回类型。

当方法主体是单个表达式时,可使用紧凑表达式格式定义方法,如下例中所示:

public override string ToString() => "This is an object";

参数

参数用于将值或变量引用传递给方法。

方法参数从调用方法时指定的自变量中获取其实际值。

有四类参数:值参数、引用参数、输出参数和参数数组。

值参数用于传递输入自变量。

值参数对于局部变量,从为其传递的自变量中获取初始值。

修改值形参不会影响为其传递的实参。

可以指定默认值,从而省略相应的自变量,这样值参数就是可选的。

引用参数用于按引用传递自变量。

为引用参数传递的自变量必须是一个带有明确值的变量。

在方法执行期间,引用参数指出的存储位置与自变量相同。

引用参数使用ref修饰符进行声明。

下面的示例展示了如何使用ref参数。

static void Swap(ref int x, ref int y)
{
    int temp = x;
    x = y;
    y = temp;
}

public static void SwapExample()
{
    int i = 1, j = 2;
    Swap(ref i, ref j);
    Console.WriteLine($"{i} {j}");    // "2 1"
}


输出参数用于按引用传递自变量。

输出参数与引用参数类似,不同之处在于,不要求向调用方提供的自变量显示赋值。

输出参数使用out修饰符进行声明。

下面的示例展示了如何使用out参数。

static void Divide(int x, int y, out int quotient, out int remainder)
{
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值