.Net基础加强04

1.面向对象多态:

virtual

abstract

接口

2.值类型,引用类型

3.值传递,引用传递(ref)

4.接口

int(C#推荐用)      int32

5.枚举  -----标志枚举

6.里氏替换原则

7.异常 try -  catch - finally{}

函数返回值(函数参数前的修饰符)

Params 可变参数,无论有几个参数,必须出现在参数列表的最后。可以为可变参数直接传递一个对应类型的数组

  class Program
    {
        static void Main(string[] args)
        {
            //int sum= Add(10,20);
            //Console.WriteLine(sum); //30
            //Console.ReadKey();

            //Console.WriteLine("你好,我叫{0},今年{1}岁了,驾龄:{2}年了","叶长种",25,0);
            //Console.ReadKey();

            //int sum = Add(10, 20, 30);
            int[] arrInt = { 1, 3, 5, 7, 9 };
            //由于可变参数本身就是一个数组,所以可以直接传递一个数组进来
            int sum = Add(arrInt);
            Console.WriteLine(sum);
            Console.ReadKey();
        }

        //可变参数即便用户不传递任何参数,也可以(不传参数则数组是一个长度为0的数组,不是null)
        //可变参数只能出现在方法参数列表的最后一个
        static int Add(params int[] nums)
        {
            int sum = 0;
            for (int i = 0; i < nums.Length; i++)
            {
                sum += nums[i];
            }
            return sum;
        }

        //static int Add(int n, int m)
        //{
        //    return n + m;
        //}

        //static int Add(int n, int m, int l)
        //{
        //    return n + m + l;
        //}
    }

ref仅仅是一个地址,引用地址,可以把值传递强制改为引用传递。

out让函数可以输出多个值;

 class Program
    {
        static void Main(string[] args)
        {
            int basicSalary = 1000;
            //ref的参数,要求传递进来的变量必须声明,并且赋值。
            JiangjinNum1(ref basicSalary);
            JiangjinNum2(ref basicSalary);
            BaoXian(ref basicSalary);
            Console.WriteLine(basicSalary);
            Console.ReadKey();
        }

        //奖金,优秀员工奖
        static void JiangjinNum1(ref int salary)
        {
            salary += 500;
        }

        static void JiangjinNum2(ref int salary)
        {
            salary += 300;
        }

        static void BaoXian(ref int salary)
        {
            salary -= 300;
        }
    }

把上面的ref改为out则不行:

 class Program
    {
        static void Main(string[] args)
        {
            int basicSalary;
            //ref的参数,要求传递进来的变量必须声明,并且赋值。
            JiangjinNum1(out basicSalary);
            JiangjinNum2(out basicSalary);
            BaoXian(out basicSalary);
            Console.WriteLine(basicSalary);
            Console.ReadKey();
        }

        //奖金,优秀员工奖
        //out参数特点:1.传递到out参数中的变量,声明不需要赋值,赋值也没有意义
        //2.在out参数所在的方法中,out参数必须赋值,并且在使用前赋值
        //3.当方法中有多个返回值得时候可以考虑out
        static void JiangjinNum1(out int salary)
        {
            salary += 500;
        }

        static void JiangjinNum2(out int salary)
        {
            salary += 300;
        }

        static void BaoXian(out int salary)
        {
            salary -= 300;
        }
    }
 class Program
    {
        static void Main(string[] args)
        {

        }

        static void M1(ref int n)
        {
            n++;
            Console.WriteLine(n);
        }

        static void M2(out int n)
        {
            n = 10;
            Console.WriteLine(n);
        }

    }

两个变量的交换:

    class Program
    {
        static void Main(string[] args)
        {
            int num1 = 10;
            int num2 = 20;
            Swap(ref num1,ref num2);
            Console.WriteLine(num1);
            Console.WriteLine(num2);
            Console.ReadKey();
        }

        static void Swap(ref int n1, ref int n2)
        {
            int temp = n1;
            n1 = n2;
            n2 = temp;
        }
    }

out举例

.Net基础加强04

时间: 2024-08-29 23:31:23

.Net基础加强04的相关文章

&lt;EDEM 基础案例04&gt;Dynamic Domain

本案例包括以下几部分: 介绍 前提 问题描述 设置和求解 后处理 1-介绍 动态计算域(Dynamic Domain)是一种高效模拟大型颗粒床的方法,通过指定局部计算区域,减少计算时间. 案例重点: 2 建立动态计算域: 2 改变颗粒透明度: 2 设置跟踪几何体的相机: 2 设计录像: 2-前提 本案例假定用户熟悉Windows软件界面风格,并对EDEM界面较为熟悉. 3-问题描述 犁地模拟,设置一个运动的刀片,刀片会和颗粒床作用.为了加快模拟速度,在和刀片作用的颗粒区域设置动态计算域,动态计算

Linux基础入门--04

目录结构及文件基本操作 实验介绍: 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录结构之前,你首先要清楚一点东西,那就是 Linux 的目录与 Windows 的目录的区别,或许对于一般操作上的感受来说没有多大不同,但从它们的实现机制来说是完全不同的. 一种不同是体现在目录与存储介质(磁盘,内存,DVD 等)的关系上,以往的 Windows 一直是以存储介质为主的,主要以盘符(C 盘,

swift基础学习(04)[运算符、属性、属性观察器、方法、下脚标本、继承、构造器]

//swift恒等运算符 //===恒等,不等!== //运用这两个运算符检测两个常量或者变量是否引用同一个实例 //"等价于"表示两个类类型(class type)的常量或者变量引用同一个类实例. //等于"表示两个实例的值"相等"或"相同",判定时要遵照设计者定义的评判标准,因此相对于"相 等"来说,这是一种更加合适的叫法. //类和结构体的选择 //属性的存储只能是类或者是结构体 //存储属性:变量存储属性va

【笨木头Lua专栏】基础补充04:迭代器初探

今天学习的内容还蛮有意思的,让我兴奋了一下~ 笨木头花心贡献,哈?花心?不,是用心~ 转载请注明,原文地址: http://www.benmutou.com/archives/1714 文章来源:笨木头与游戏开发 1.迭代器 什么是迭代器?别傻了,我最讨厌的就是名词解释了,反正就是用来遍历集合的一种方式. 比如,我们最常用的pairs,如下代码: local t = {"fdsd", "445"}; for k, v in pairs(t) do print(&qu

Java多线程系列--“基础篇”04之 synchronized关键字

概要 本章,会对synchronized关键字进行介绍.涉及到的内容包括:1. synchronized原理2. synchronized基本规则3. synchronized方法 和 synchronized代码块4. 实例锁 和 全局锁 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479202.html 1. synchronized原理 在java中,每一个对象有且仅有一个同步锁.这也意味着,同步锁是依赖于对象而存在.当我们调用某对象的sy

python基础知识 04 数学的基础知识

课程三 数字的基础知识 python控制台可以执行的当做计算器去执行算数 比如 在python控制台执行执行 [[email protected] ~]# ipython Python 3.7.4 (default, Aug 13 2019, 20:35:49) Type 'copyright', 'credits' or 'license' for more information IPython 7.8.0 -- An enhanced Interactive Python. Type '?

MySQL基础篇(04):存储过程和视图,用法和特性详解

本文源码:GitHub·点这里 || GitEE·点这里 一.存储过程 1.概念简介 存储程序是被存储在服务器中的组合SQL语句,经编译创建并保存在数据库中,用户可通过存储过程的名字调用执行.存储过程核心思想就是数据库SQL语言层面的封装与重用性.使用存储过程可以较少应用系统的业务复杂性,但是会增加数据库服务器系统的负荷,所以在使用时需要综合业务考虑. 2.基本语法格式 CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characterist

JS基础学习04

15. 冒泡排序 定义:冒泡排序就是讲数据从大到小或者从小到大排列的一种算法. 方法:通过循环语句来实现,具体实现方式为:逐个将数组中的值,依次和其后面的值进行比较,如果比较的结果满足一定的要求的话,则两者进行两两交换,直至循环结束完成排序.如: 冒泡排序,从小到大    [65,97,76,13,27,49,58] var arr = [65,97,76,13,27,49,58,1,12,26];    var m ; //方法一:    for(var i = arr.length-1; i

swift基础学习(04)[闭包、函数、枚举、类和结构体]

//闭包表达式:闭包表达式是一种利用简洁语法构建内联闭包的方式 //sort方法:排序功能,排序后的原来的不会被修改 //:从大到小排序 let names = ["d","ds","wa","ad"] func sortNames(sName1:String,sName2:String) -> Bool { return sName1 > sName2 } var result = names.sort(sort