C#中级开发原创教程第四课-值传递和引用传递
本帖最后由 王尼玛 于 2014-11-26 05:07 编辑大家好,我是王尼玛。今天起我给大家讲解C#中级开发教程,本次是第四课。大家在课后有什么疑问可以跟帖留言,我会尽我所能来解答。毕竟众口难调,大家有什么建议也可以跟帖告诉我。
此教程为本人原创,转载请注明"吾爱汇编论坛王尼玛原创"
好了,废话不多说,开始今天的学习.
有朋友说不太明白我写的教程,其实编程这东西很简单,一个字,练!你光看我写的多半是一头雾水,因为你没实际跟着我讲的代码去操作,你要跟着我的代码敲,多敲代码,多练习我给的例子,再配合我例子后面的讲解,自然就明白我讲的是什么了.还不明白?跟帖问吧
1.值传递
问题:
王尼美同学在完成软件开发的课程后,到一家软件公司面试程序员
老板告诉她税前工资,工资计税的方法为:
收入小于2000元不计税,超过2000元按10%缴税,王尼美编写了如下程序计算自己的税后工资
static void Main(string[] args)
{
int pay;//税前工资
float taxRate = 0.1f;//税率
float afterTax;//税后工资
Console.WriteLine("请输入税前工资");
pay = int.Parse(Console.ReadLine());
if(pay<=2000)
{
afterTax = pay;
}
else
{
afterTax = pay - (pay - 2000) * taxRate;
}
Console.WriteLine("税前工资{0},税后工资{1}", pay, afterTax);
Console.ReadLine();
}
运行结果:
王尼美同学很快完成了程序,交给老板.此时,老板又提出新的问题
如果经过几年后工资计税方法改变,超出2000的部分按15%缴税,该怎么办呢
分析:
经过思考,王尼美同学决定采用自定义方法来实现老板提出的新要求
自定义方法的名称为Getpay();将税前工资和税率作为该方法的参数传入
将税后工资作为该方法的返回值
class Pay
{
public void Inputpay()
{
int pay;//税前工资
float taxRate = 0.1f;//税率
float afterTax;//税后工资
Console.WriteLine("请输入税前工资");
pay = int.Parse(Console.ReadLine());
//调用方法计算税后工资
afterTax = GetPay(pay, taxRate);
Console.WriteLine("税前工资{0},税后工资{1}", pay, afterTax);
}
public float GetPay(int pay,float taxRate)
{
float afterTax;//计税后的工资
if(pay<=2000)//低于2000不计税
{
afterTax = pay;
}
else
{
afterTax = pay - (pay - 2000) * taxRate;
}
return afterTax;
}
}测试代码
static void Main(string[] args)
{
Pay pay = new Pay();
pay.Inputpay();
}运行结果:
问题:
如何用自定义方法交换两个数字的值,并输出这两个交换后的数?
王尼美编写了如下所示代码来解决这个问题,请你看看她的代码是否能完成老板提出的需求
public void InputData()
{
int num1, num2;
Console.WriteLine("请输入两个数字");
num1 = int.Parse(Console.ReadLine());
num2 = int.Parse(Console.ReadLine());
Console.WriteLine("交换前两个数分别为:{0}和{1}", num1, num2);
//交换两个数值
Swap(num1, num2);
Console.WriteLine("交换前两个数分别为:{0}和{1}", num1, num2);
}
public void Swap(int num1,int num2)
{
int temp;//中间变量
temp = num1;
num1 = num2;
num2 = temp;
}运行结果:
分析运行结果会发现,方法调用后,两个数的值并没有交换,这是为什么?
因为在为方法传递参数时使用了值传递
什么是值传递?
上面的Swap就是只把参数的值传到方法里面
如果在被调用的方法中对参数的值进行了修改,在方法调用后,参数仍然是原来的值
那么,有什么方式能够在方法调用后对参数值进行修改呢?
这就需要按引用传递参数
2.按引用传递参数
方法中数据的传递除了值传递外,还可以按引用传递参数
利用按引用传递参数的方式可以在方法调用之后,仍然保留对参数值的修改
要想使参数按引用传递,需要使用ref关键字来修饰参数
public void InputData()
{
int num1, num2;
Console.WriteLine("请输入两个数字");
num1 = int.Parse(Console.ReadLine());
num2 = int.Parse(Console.ReadLine());
Console.WriteLine("交换前两个数分别为:{0}和{1}", num1, num2);
//交换两个数值
Swap(ref num1, ref num2);
Console.WriteLine("交换前两个数分别为:{0}和{1}", num1, num2);
}
public void Swap(ref int num1,ref int num2)
{
int temp;//中间变量
temp = num1;
num1 = num2;
num2 = temp;
}运行结果
现在你了解了值传递和引用传递的区别了吧?
这节课就到这,谢谢大家
楼主辛苦了,一直帮我们这些初学者录制教程!吾爱汇编论坛有你更精彩!
感谢 楼主的C#教程,简单易懂
楼主厉害。膜拜!
对于这些现在还是不懂啊 学习中。。。。
{:5_116:}每次看完后都会懂一点,感谢王尼玛大大的教程
我数学这么差你还叫我算数、、
小弟,大哥来咯{:5_188:}
来学习了 谢谢
页:
[1]