visual C#(三)方法和作用域

参考书:《 visual C# 从入门到精通》
第一部分 Visual C# 和Visual Studio 2015概述
第3章 方法和作用域

3.1 创建方法

C#的方法也就是函数的意思。通常创建一个方法需要有:返回类型、方法名、参数列表、方法主体语句。如果一个方法不反回任何值要用关键字void

3.1.2从方法返回数据

return返回特定类型的值。

3.1.3 使用表达式主体方法

对于很简单的方法,C#允许一种简化的形式:

int addValues(int leftHandSide,int rightHandSide)=>leftHandSize+rightHandSize;

void showResult(int answer)=>Console.WriteLine($"The answer is {answer}");

这种形式感觉还是很有特色的。

3.1.4 调用方法

3.2 使用作用域

3.2.1 定义局部变量

方法主体中声明的任何变量都具有方法的作用域,它们只能由方法内部的代码访问,即局部变量。

3.2.2 定义类作用域

在类主体中声明的任何变量都具有类的作用域。类定义的变量称为字段。和局部变量相反,可用字段在不同方法之间共享信息。

3.2.3 重载方法

重载允许多个方法同名但参数类型不完全相同,编译器根据参数类型来区分。(同C++)

3.3 编写方法

下面我们创建方法来计算一名顾问的收费金额。代码如下:

using System;

namespace c_3_3
{
    class Program
    {
        static void Main(string[] args)
        {
            new Program().run();
        }
        void run()
        {
            double dailyRate = readDouble("Enter your daily rate:");
            int noOfDays = readInt("Enter the numer of days:");
            writeFee(CalculateFee(dailyRate, noOfDays));
        }

        private void writeFee(double v) => Console.WriteLine($"The consultant's fee is :{v * 1.1}");

        private double CalculateFee(double dialyRate, int noOfDays) => dialyRate * noOfDays;

        private int readInt(string v)
        {
            Console.Write(v);
            String line = Console.ReadLine();
            return int.Parse(line);
        }

        private double readDouble(string v)
        {
            Console.Write(v);
            String line = Console.ReadLine();
            return double.Parse(line);
        }
    }
}

有个小技巧是,我们可以先创建方法run:

void run()
        {
            double dailyRate = readDouble("Enter your daily rate:");
            int noOfDays = readInt("Enter the numer of days:");
            writeFee(CalculateFee(dailyRate, noOfDays));
        }

然后右击各个方法名选择菜单中的快速操作和重构,vs会自动生成各个方法的包括返回类型、方法名、参数列表,我们只需要修改方法的主体语句就行了。

3.4 使用可选参数和具体参数

3.4.1 定义可选参数

void optMethod(int first,double secon=0.0,string third="Hello"){
    ...
}

3.4.2 传递具名参数

可以这样调用:

optMethod(first:99,second:123.45,Third:"World");
optMethod(first:100,second:54.321);

3.4.3 消除可选参数和具名参数的歧义

使用可选参数和具名参数,重载时可能会造成歧义。比如:

void optMethod(int f,double s=0.0,string t="hello"){
    ...
}
void optMethod(int f,double s=0.0,string t="hello",int fourth=100){
    ...
}

上面的代码时完全合法的,但如果调用optMethod方法时就可能出问题:

optMethod(1,2.5,"world");

上述代码是合法的,调用的版本选择和方法调用最匹配的。但如果是:

optMethod(1,2.5);

编译器两个版本都不选,直接不允许编译。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值