C#学习笔记(三)

By | 06月14日
Advertisement

1、我们在Main()函数中,调用Test()函数,我们管Main()函数称之为调用者,
管Test()函数称之为被调用者。
如果被调用者想要得到调用者的值:
1)、传递参数。
2)、使用静态字段来模拟全局变量。
如果调用者想要得到被调用者的值:
1)、返回值

C#没有全局变量,用static实现(类作用域)。

2、
不管是实参还是形参,都是在内存中开辟了空间的。

3、方法的功能一定要单一。
GetMax(int n1,int n2)
方法中最忌讳的就是出现提示用户输入的字眼。

4、out、ref、params
1)、out参数。
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。
但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,
我们可以考虑使用out参数。out参数就侧重于在一个方法中可以返回多个不同类型的值。
注释:这个返回并不是return返回的,而是通过参数带出来的。
比如登陆:返回登陆结果(成功或者失败)和登录信息(用户名或者密码错误)。
msg在方法外就是个普通的String,不需要初始化。

/// <summary>
        /// 判断登陆是否成功
        /// </summary>
        /// <param name="name">用户名</param>
        /// <param name="pwd">密码</param>
        /// <param name="msg">多余返回的登陆信息</param>
        /// <returns>返回登陆结果</returns>
        public static bool IsLogin(string name, string pwd, out string msg)
        {
            if (name == "admin" && pwd == "888888")
            {
                msg = "登陆成功";
                return true;
            }
            else if (name == "admin")
            {
                msg = "密码错误";
                return false;
            }
            else if (pwd == "888888")
            {
                msg = "用户名错误";
                return false;
            }
            else
            {
                msg = "未知错误";
                return false;
            }
        }

有同学提到可以用结构体返回..........感觉是对的

2)、ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法。
ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
注释:感觉像C语言中的值传递。只不过不要返回值,通过ref直接改变了。

比如:交换变量,(不用类似址传递的方法)

3)、params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。
params可变参数必须是形参列表中的最后一个元素。
注释:最后一个,否则不知道可变参后边的元素是否是可变参内容;不能有多个可变参,那样不是最后的可变参就不符合语法。

5、方法的重载
概念:方法的重载指的就是方法的名称相同给,但是参数不同。
参数不同,分为两种情况
1)、如果参数的个数相同,那么参数的类型就不能相同。
2)、如果参数的类型相同,那么参数的个数就不能相同。
***方法的重载跟返回值没有关系。

6、方法的递归
方法自己调用自己。
找出一个文件夹中所有的文件。

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

namespace _14_方法的递归
{
    class Program
    {
        static void Main(string[] args)
        {
            TellStory();
            Console.ReadKey();
        }

        public static int i = 0;

        public static void TellStory()
        {
            //int i = 0;写这个的话 死循环
            Console.WriteLine("从前有座山");
            Console.WriteLine("山里有座庙");
            Console.WriteLine("庙里有个老和尚和小和尚");
            Console.WriteLine("有一天,小和尚哭了,老和尚给小和尚讲了一个故事");
            i++;
            if (i >= 10)
            {
    //break是跳出本次循环
                return;
            }
   //TellStory(0);和第一行写int i=0一个效果
            TellStory();

        }
    }
}

Similar Posts:

  • angular学习笔记(三十)-指令(7)-compile和link(2)

    继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的代码: html: <body> <div ng-controller="compileCtrl"> <level-one> <level-two> <level-three> hello,{{name}} </level-

  • CEGUI学习笔记三-- 如何显示中文和中文输入 (转kun(小龙))

    CEGUI学习笔记三-- 如何显示中文和中文输入 CEGUI使用utf8编码格式.这就意味着我们可以很简单的就显示中文. 1.弄个包含中文的字体,在这里我借用大多数例子里的 "C:/windows/Font/simhei.ttf"文件.把这个文件拷贝到Datafiles文件夹的Font文件夹里. 2.随便照着一个 .Font文件,自己写一个simhei.font文件.可以用TXT写,然后保存,有的朋友说需要保存为utf8编码格式,实际上是不需要的. 3.同时注意修改你加载到程序里的sc

  • 【Unity 3D】学习笔记三:TextField控件(文本框)

    Unity 学习笔记三 学习资料:<Unity 3D游戏开发> 宣雨松 在程序里,都会有登陆界面,让你输入账号密码.或者是你破纪录后填写用户名.这些都是需要用法TextField控件.主要用于监听用户输入的信息. 一般情况下,使用GUI.TextField()显示输入框,返回值为用户输入的字符串信息.使用GUI.PasswordField()用作密码输入框,输入的字符串以 '*'(可自定义)显示. 例子 //用户名 var editUsername : String; //密码 var edi

  • J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Java Bean有啥区别呢?书中是这样说的:JavaBeans和Enterprise JavaBeans是两个不同的东西,但是因为一些相似些,它们具有共同的名字.JavaBeans是用Java构建的组件,可以用于应用的任意一层上,它们通常都和Servlet或者GUI组件有关.Enterprise Ja

  • J2ME学习笔记(三)-----学习MIDlets huanghui22 [原作]

    J2ME学习笔记(三)-----学习MIDlets 出处 处理MIDlets 1. MIDlet是使用MIDP特征和CLDC配置的MIDlet应用 1).MIDlet是打包成JAD(JAVA描述符)文件的Java类文件 2).MIDlet运行在已安装于MIDP设备上的Application Management Software(应用管理软件AMS).AMS提供KVM和MIDlets的环境 3).MIDlet是在支持CLDC和MIDP的手持设备中使用. 2. MIDlet的生命周期(图) 3.

  • Hibernate 学习笔记( 三)-- 复合主键

    关于如何配置请参看:Hibernate 学习笔记(一)--用MyEclipse 6.5+MySQL 5.0的环境跑起来 准备:建表 用MySQL在名为STMS数据库中建表personx src/org.lxh.hibernate2.Personx.java 1 package org.lxh.hibernate2; 2 3 /** */ /** 4 * @author ∪∩BUG E-mail: [email protected] 5 * @version Aug 31, 2008 9:56:51

  • CAS单点登录学习笔记三之HTTPS 单向认证方式 服务端和客户端配置

    CAS单点登录 概述 (1)CAS简介 (2)CAS官网 环境配置 在同一个机器上配置三个虚拟机 windows7_32位 JDK 1.6.0_18 Tomcat 6.0.29 CAS-server-3.4.11 CAS-client-3.2.1 配置host 根据演示需求,用修改hosts 文件的方法添加域名 在文件 C:\Windows\System32\drivers\etc\hosts 文件中添加三条 127.0.0.1 demo.tch.com ##服务器,即名字与姓氏 127.0.0

  • WebWork In Action学习笔记(三) 学会配置action、result和interceptor

    作者:施伟,原文出处: http://www.blogjava.net/crespo9907/archive/2007/03/10/webworkinaction_note3.html,转载请保留. 在上一篇笔记WebWork In Action学习笔记(二) WebWork方式的HelloWorld 中我们已经学会了如何构建一个简单的WebWork应用程序,除了创建几个简单的Java和Jsp程序外还配置了web.xml和xwork.xml.本篇我们就来继续讨论都是在xwork.xml中配置的a

  • Silverlight学习笔记三:如何自定义DataGrid的Header

    接上篇,继续学习DataGrid.下面我来学习DataGrid的Header的自定义功能. 在上篇中,我们实现的对Grid的排序,但是用的是Grid自动生产的Header,现在我们用自定义的控件来代替系统自动生成的Header,并且在Header下面添加一个可以对数据进行过滤的功能. 在这里我参考了silverlight.net上一群牛人的代码. 因为过去没有用过silverlight,在silverlight.net上听说在2.0RC出来之前,自定义ColumnHeader很容易,只需要设置C

  • Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

     周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark SQL相关的知识,如果对Spark不熟的同学可以先看看之前总结的两篇文章: [原]Learning Spark (Python版) 学习笔记(一)----RDD 基本概念与命令 [原]Learning Spark (Python版) 学习笔记(二)----键值对.数据读取与保存.共享特性 ##

  • Dojo学习笔记(三)(转)

    Usage Example: function onTime(msg){dojo.debug(msg)}dojo.lang.setTimeout(onTime, 1000, "test"); //1秒后会输出调试信息"test"dojo.lang.setTimeout(dojo, "debug", 1000, "test"); //1秒后会输出调试信息"test" dojo.lang.getNameInOb

Tags: