C#官方文档学习笔记(2)

这篇博客深入探讨了C#中的类和对象,包括类型参数、基类、ref引用传递、静态和实例方法。作者强调了类型参数在泛型中的作用,以及C#中继承的特性,如使用":"表示基类。同时,讨论了ref关键字与C语言指针的相似性,以及静态和实例方法的区别。文章以实例展示了面向对象编程的设计思想,并简要提及了构造函数、属性、索引器、事件和运算符等其他函数成员。
摘要由CSDN通过智能技术生成

C# :类和对象

类和对象的具体定义可以参考 微软官方文档:

类是最基本的 C# 类型。 类是一种数据结构,可在一个单元中就将状态(字段)和操作(方法和其他函数成员)结合起来。 类为动态创建的类实例(亦称为“对象”)提供了定义。 类支持继承和多形性,即派生类可以扩展和专门针对基类的机制。
新类使用类声明进行创建。 类声明的开头是标头,指定了类的特性和修饰符、类名、基类(若指定)以及类实现的接口。 标头后面是类主体,由在分隔符 { 和 } 内编写的成员声明列表组成。
具体请看C#官方文档关于类和对象的详解

下面讲去了解类型参数:

具体定义:

类定义可能会按如下方式指定一组类型参数:在类名后面用尖括号括住类型参数名称列表。 然后,可以在类声明的主体中使用类型参数来定义类成员。

using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace ConsoleApp1
{
   
    class Program
    {
   
        static void Main(string[] args)
        {
   
            Pari<int, string,double> pair = new Pari<int, string,double> {
    First = 1, second = "two" };
            ReadLine();
        }
        

      
    }
    //尖括号中的名称是自定义(包括数量也可以为4个或者更多),泛型类类型。在接口和结构,委托中也可以使用泛型;
    public class Pari<TFirst,TSecond,Three>
    {
   
        public TFirst First;
        public TSecond second;
    }
}

自我感觉类型参数在使用泛型后,其功能目前我感觉是赋值和初始化某些变量,其功能可以用·类的构造方法来实现同样的功能。
包含类型自变量的泛型类型(如上面的 Pair<int,string,double>)被称为构造泛型类型。

基类

在C#中所有的数据类型都是继承的基类:Object
但是在写程序的过程中总会出现一些情况,用到一个类的一部分属性,但是有一些属性我们定义的类中,它没有,这个时候就需要用到继承。
在C# 中继承和java中的不同 直接用 “ ” 就可以
在刚学到上面的东西会,作者发现类型参数这种东西有点方便,由于使用了泛型,所有我们的变量的类型可以由我们去改写,这样增加了代码的耦合性,我们的代码的适用范围就更大了一些,如下代码:
将展示的是,类型参数和继承。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace ConsoleApp1
{
   
    class Program
    {
   

       public static void Main()
        {
   
        //使用了类型参数,所有变量类型可以去改变,防止写死程序
            Ponit3D<int, int, int> point = new Ponit3D<int, int, int>(3, 4, 5);
            WriteLine(point.z);
            ReadLine();
        }


    }


    class Ponit<X, Y>
    {
   
       public X x;
       public Y y;
        public Ponit(X x, Y y)
        {
   
            this.x = x;
            this.y = y;
        }
    }

    class Ponit3D<X,Y,Z> : Ponit<X,Y>
    {
   
        public Z z;
        public Ponit3D(X x, Y y, Z z) :
            base(x,y)
         {
   
            this.z = z;
        }
    }

    
}
           

如上代码,体现了 继承和类型参数的方便之处,如果我们已经写好了一个二维的点的类,需要三维的点,直接继承就可以了,需要注意的是:C#中继承这个选项 构造方法 一定要是 base(类型参数)java的则是super,而且两者的写完也是不同。base(x,y) 是写在方法体外的需要注意。

ref 引用传递自变量

在用法上感觉 ref 和C语言中的指针类似,都用来传递一个参数到一个方法中。但是在定义中,引用参数必须是一个具体的值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

namespace ConsoleApp1
{
   
    class Program
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值