首页 > 编程语言 >C#学习第二天

C#学习第二天

时间:2022-10-05 16:47:15浏览次数:48  
标签:Console C# 学习 int 第二天 result WriteLine NumberManipulator ref

  今天进行了C#的第二次学习,继续了解C#的相关知识:

目录


方法

  定义方法的过程与Java还有C++无异,所以不做过多赘述。
  调用方法是可以直接调用其他类的公有方法的。

using System;

namespace CalculatorApplication
{
    class NumberManipulator
    {
        public int FindMax(int num1, int num2)
        {
            /* 局部变量声明 */
            int result;

            if (num1 > num2)
                result = num1;
            else
                result = num2;

            return result;
        }
    }
    class Test
    {
        static void Main(string[] args)
        {
            /* 局部变量定义 */
            int a = 100;
            int b = 200;
            int ret;
            NumberManipulator n = new NumberManipulator();
            //调用 FindMax 方法
            ret = n.FindMax(a, b);
            Console.WriteLine("最大值是: {0}", ret );
            Console.ReadLine();

        }
    }
}

递归方法调用,下面是一个计算阶乘的代码,就是在自己里面调用自己。

using System;

namespace CalculatorApplication
{
    class NumberManipulator
    {
        public int factorial(int num)
        {
            /* 局部变量定义 */
            int result;

            if (num == 1)
            {
                return 1;
            }
            else
            {
                result = factorial(num - 1) * num;
                return result;
            }
        }

        static void Main(string[] args)
        {
            NumberManipulator n = new NumberManipulator();
            //调用 factorial 方法
            Console.WriteLine("6 的阶乘是: {0}", n.factorial(6));
            Console.WriteLine("7 的阶乘是: {0}", n.factorial(7));
            Console.WriteLine("8 的阶乘是: {0}", n.factorial(8));
            Console.ReadLine();

        }
    }
}

参数传递。

按值传递

  只需要记住形参改变时是不会影响实参的值的,以此来保障实参的值。

按引用传递

  在C#中,使用ref关键字声明引用参数。就是共用实参的地址,不会再去创建一个新的地址。下面我们可以清晰的看到运行结果是成功交换了的。

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void swap(ref int x, ref int y)
      {
         int temp;

         temp = x; /* 保存 x 的值 */
         x = y;    /* 把 y 赋值给 x */
         y = temp; /* 把 temp 赋值给 y */
       }
   
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         /* 局部变量定义 */
         int a = 100;
         int b = 200;

         Console.WriteLine("在交换之前,a 的值: {0}", a);
         Console.WriteLine("在交换之前,b 的值: {0}", b);

         /* 调用函数来交换值 */
         n.swap(ref a, ref b);

         Console.WriteLine("在交换之后,a 的值: {0}", a);
         Console.WriteLine("在交换之后,b 的值: {0}", b);
 
         Console.ReadLine();

      }
   }
}

img

按输出传递

  基础用法与ref一样,不过是关键字换成了out。要记住ref数据类型是有进有出,out数据类型是只进不出,且out型数据在方法中必须要赋值。


可空类型

  可控类型可以理解为就是赋予一个变量的默认值为null,当然也是可以不为null的,具体用法为:int? i = 3;,它等价于Nullable<int> i = new Nullable<int>(3);。然后做一个对比看一下,int i; //默认值0 int? ii; //默认值null
  上述数据类型又被称作是nullable类型。

标签:Console,C#,学习,int,第二天,result,WriteLine,NumberManipulator,ref
From: https://www.cnblogs.com/lht020321/p/16755805.html

相关文章

  • LCP 最长公共前缀(一个字符串中,两个位置的后缀的最长公共前缀)
    LCP也可以用来进行一个字符串的子字符串的比较需要预处理lcp[i][j]数组,表示从i开始的后缀和从j开始的后缀的最长公共前缀lcp[i][j]可以从lcp[i+1][j+1]递推过来O(n^2)预......
  • JDBC 尚硅谷 事务、DAO、连接池、DBUtils(下篇)
    days0312. Druid(德鲁伊)数据库连接池连接方式、配置文件,详见尚硅谷JDBC_P441.事务内涵:一组逻辑操作单元,使数据从一种状态变换到另一种状态(一个或多个DML操作);......
  • CF1739 C. Card Game
    题目链接题意简述有这样一个游戏,有一摞编号为\(1\simn\)的卡片(保证\(n\)为偶数),编号大的卡片比编号小的卡片更"强".两名玩家玩这个游戏,他们平均分这\(n\)......
  • 【软件学习】如何将Typora中的本地图片上传到博客
    1.配置方法下载软件:点击程序输入博客信息进行配置:进行偏好设置:2.配置中出现的一些问题解决方法:......
  • JavaScript中的Promise详解
    我们了解Promise之前先了解一下什么是异步,因为Promise是用来处理异步操作的一、什么是异步异步(Asynchronous,async)是与同步(Synchronous,sync)相对的概念。总所周知,Jav......
  • 【软件学习】:如何把Mathtype法加载如word
    参考视频:https://www.bilibili.com/video/BV1cV41117SR?from=search&seid=11224207889712369816安装MathType-win-zh.exe至指定位置(需要关闭office再安装);右键单击Math......
  • rockylinux9.0静态ip配置
    方式一修改NetworkManager配置文件(ens33为我的网卡名)修改完成后,执行命令如下,使配置生效#重新加载配置文件[root@k8s-master~]#nmcliconnectionload/etc/NetworkM......
  • 初学C语言笔记221005
    realloc调整动态内存开辟空间的大小​int*p1=(int*)malloc(10*sizeof(int));​if(p1==NULL){printf("%s",strerror(errno));}else{*p1=0x12345678;*......
  • 机器学习评估指标代码参考 特异性 准确率 召回率 等
    importxlrdimportnumpyasnpfromsklearn.model_selectionimporttrain_test_split#划分测试集和训练集importmatplotlib.pyplotaspltfromsklearn.model_s......
  • ABC 249 C - Just K(dfs)
    https://atcoder.jp/contests/abc249/tasks/abc249_c题目大意:给定n个字符串,让我们随意选择,然后找到这里面相同的字母刚好等于k个的时候的数量是多少?求可选择出来的最......