我是一个菜鸟,我只是在努力,2021正视自己,面对2021!

C#基础系列第七篇

前言: 完全是我在学习过程中记录的笔记,只不过分享一下让很多刚开始学习.net编程的人能够很快的学会C#语言

  1. out和ref

(1) 方法中的变量都是局部变量,使用如果需要保证方法中的数据在外界还能使用,那么可以考虑返回值return,但是return只能返回一个数据,如果考虑多个返回数据,就不行了

(2)可以使用参数返回,out就是参数返回的一种

            1)方法外定义一个变量

            2)方法参数写为"...out 参数名..."

            3)调用,在方法中为这个变量赋值

            4)在方法调用后,方法外的这个变量就包含了方法中赋的值

                static void Main(string[] args)

                   {

                          int num;

                          GetNum(out num);

                          Console.WriteLine(num);

                   }

                   static  void GetNum(out int num)

                   {

                          num = 10;

                   }

     (3)ref同样可以使用这个功能

            1)ref在使用前要赋值

            2)out必须在方法中赋值

     (4)一般使用ref是使用方法修改某些数据以后,要求方法结束后还能使用

     (5)一般使用out是为了使用某个方法为某些变量进行初始化

     (6)ref使用前赋值,out方法中赋值

  1. 一个案例:模拟登陆

(1))返回登录是否成功,如果登录失败,提示用户用户名错误还是密码错误

  1. 可变参数

(1) 如果参数是一个数组,那么在传参的时候必须定义一个数组出来

         class Program

            {

                   static void Main(string[] args)

                   {

                          int[] nums = { 1, 2, 3, 5, 4, 65, 76, 786, 8, 9, 89 };

                          GetArrayList(nums);

                          GetArrayList(); //传递一个长度为0的数组

                          GetArrayList(1, 2, 3, 5, 4, 65, 76, 7, 34, 65, 76, 86, 8, 9, 89);

                          Console.ReadKey();

                   }

                   public static void GetArrayList(params int[] nums)

                   {

                          Console.WriteLine(nums.Length);

                   }

            }

(2) 如果方法有多个参数params只能放在最后,并且方法中只允许有一个params数组

            static void Main(string[] args)

        {

            int[] nums = { 1, 2, 3, 5, 4, 65, 76, 786, 8, 9, 89 };

            OutPut(5, 23, 43, 54, 54, 65);

            Console.ReadKey();

        }

        //用一个方法完成数组的输出,指定输出多少项

        public static void OutPut(int count, params int[] nums)

        {

            for (int i = 0; i < count; i++)

            {

                Console.Write("{0} ", nums[i]);

            }

        }

        //public static void OutPut(int n1, int n2, int n3, int n4, int n5,int n6)

        //{

        //}

  1. 重载的方法提供转换的实现

(1) 定义隐式转换使用关键字  implicit

 (2)定义显示转换使用关键字  explicit

 (3)转换顺序和定义顺序相同

            变量1=变量2;

            对应参数 类型1(类型2 value);

(4)语法

            [访问修饰符] static [implicitlexplcit] operator 目标类型(待转类型 value)

            {

                   目标类型 o=new 目标类型();

            //赋值操作,显示转换中可以将赋值操作作用checked{..}块包起来,如放不下就异常

                   return 0;

            }

posted @   Kencery  阅读(1738)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
友情链接:初心商城
点击右上角即可分享
微信分享提示