⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8-1.cs

📁 java基础方面的一些实例代码
💻 CS
字号:
//程序8-1
using System;
namespace ParametersPassing
{
	public class ParamsPassing
	{
		char [] ChArr;  // 默认访问修饰符是private
		//构造函数
		public ParamsPassing ()
		{}
		public ParamsPassing (char[] ch)  // 值传递的构造函数
		{ ChArr=ch;	}
		public ParamsPassing(ref char[] ch) // 引用传递的构造函数
		{ ChArr = ch; }
		//测试用属性
		public char MyChArr                
		{
			get{ return ChArr[1];}
			set{ ChArr[1] = value;}
		}
		//测试用方法
		//值类型参数,“值传递”
		//实参将值传递给形参,系统为形参开设存储空间,以接受传递的值。
		//改变形参的值不会影响实参。
		public int Sum(int x, int y)
		{
			Console.WriteLine("Before Calculating, x={0},  y={1}",x,y);
			x ++;
			y ++;
			Console.WriteLine("After Calculating,  x={0},  y={1}",x,y);
			return x+y;    
		}
		//值类型参数,“引用传递”
		//实参将自己的引用,也就是自己数据在存储器中的地址复制给形参。
		//引用参数既是方法的输入,也是方法的输出。
		//改变形参的值将会影响实参。
		//使用ref参数时,实参传递给形参之前应该已经被具体地赋值或者初始化
		public void Swap( ref int x,ref int y)
		{
			Console.WriteLine("Before  Swapping x={0},  y={1}",x,y);
			int temp;
			temp=x;
			x=y;
			y=temp;
			Console.WriteLine("After Swapping x={0},  y={1}",x,y);
		}
		//引用类型参数,“值传递”和“引用传递”
		//引用类型参数不使用ref,也是引用传递
		//忠告:要想传出实参的值,就用ref。
		public void ArrParams(int[] ValArr, ref int [] RefArr)
		{
			Console.WriteLine("In the method:");
			Console.Write("Before calculating,the ValArr's elements are:");
			foreach(int elem in ValArr)Console.Write(elem+", ");Console.WriteLine();
			ValArr[0]=123;
			ValArr=new int[]{-1,-2,-3}; //创建一个与形参同名的数组,但是不是实参传递的数组
			Console.Write("After calculating the ValArr's elements are:");
			foreach(int elem in ValArr)Console.Write(elem+", ");Console.WriteLine();
			Console.Write("Before calculating,the RefArr's elements are:");
			foreach(int elem in RefArr)Console.Write(elem+", ");Console.WriteLine();
			RefArr[0]=456;
			RefArr=new int[]{-4,-5,-6}; //创建一个与形参同名的数组,与实参的地址相同
			Console.Write("After calculating,the RefArr's elements are:");
			foreach(int elem in RefArr)Console.Write(elem+", ");Console.WriteLine();
			Console.WriteLine("Leave the method");
		}
	}
	public class Test
	{
		public static void Main ()
		{
			ParamsPassing AnExample =new ParamsPassing();
			//测试值类型参数的值传递
			Console.WriteLine("======值类型参数传递====");
			int value1=5;
			int value2=10;
			Console.WriteLine("调用值传递方法前value1 = {0},  value2 = {1}", value1, value2);
			int theSum=AnExample.Sum(value1, value2);
			Console.WriteLine("Sum= "+theSum);
			Console.WriteLine("调用值传递方法后value1 = {0},  value2 = {1}", value1, value2);
			//测试引用传递
			Console.WriteLine("调用引用传递方法前value1 = {0},  value2 = {1}", value1, value2);
			AnExample.Swap(ref value1,ref value2); //调用前必须对value1和value2赋值,这是与out不同点。
			Console.WriteLine("调用引用传递方法后value1 = {0},  value2 = {1}", value1, value2);

			Console.WriteLine("======引用类型参数传递====");
			//测试引用类型参数的“值传递”和引用传递
			int[] FirArr = {101,102,103};
			int[] SecArr={201,202,203};
			Console.Write("测试前,数组FirArr的元素为:");
			foreach(int elem in FirArr)Console.Write(elem+", ");
			Console.WriteLine();
			Console.Write("测试前,数组SecArr(ref传递)的元素为:");
			foreach(int elem in SecArr)Console.Write(elem+", "); 
			Console.WriteLine();
			AnExample.ArrParams(FirArr,ref SecArr);
			Console.Write("测试后,数组FirArr的元素为:");
			foreach(int elem in FirArr)Console.Write(elem+", ");
			Console.WriteLine();			
			Console.Write("测试后,数组SecArr的元素为:");
			foreach(int elem in SecArr)Console.Write(elem+", ");
			Console.WriteLine();

			Console.WriteLine("======值传递的构造函数====");
			char[]cc={'a','b','c','d'};
			ParamsPassing AnotherExample=new ParamsPassing(cc);
			Console.WriteLine("测试前,ChArr[1]是:"+AnotherExample.MyChArr);
			cc[1]='f';
			Console.WriteLine("实参cc[1]修改为f后,ChArr[1]为:"+AnotherExample.MyChArr);
			AnotherExample.MyChArr='w';
			Console.WriteLine("ChArr[1]修改为w后,cc[1]的值为:"+cc[1]);

			Console.WriteLine("======引用传递的构造函数====");
			char[]dd = {'a','b','c','d'};
			ParamsPassing The3rdExample=new ParamsPassing(ref dd);
			Console.WriteLine("测试前,ChArr[1]是:"+The3rdExample.MyChArr);
			dd[1]='m';
			Console.WriteLine("实参dd[1]修改为m后,ChArr[1]为:"+The3rdExample.MyChArr);
			The3rdExample.MyChArr='s';
			Console.WriteLine("ChArr[1]修改为s后,实参dd[1]的值为:"+dd[1]);
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -