c#.NET中如何给一个数组传值

作者&投稿:罗季 (若有异议请与网页底部的电邮联系)
C#里如何给函数传数组类型的值~

1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace ConsoleApplication1
7 {
8 class Program
9 {
10 /* 先来了解一下什么是实参, 什么是形参.
11 所谓形参其实也就是说函数定义的时候所带的参数. 比如 static void Myfuntion(int i , int t) 其中 int i and int t 都是形参.
12 * 而实参呢? 实参代表的是将要传入函数里面进行运算的两个参数, 可以是变量,也可以是常量.只要与形参类型相同即可*/
13
14 // 函数分为传值与传址两种方式. 传值不影响实参的数据,传址则会影响实参的数据. 下面用几段代码来示例
15 //在使用传值或者传址的选择上应当遵循这样一个规则.
16 //1. 传值是将形参的内容复制一份给实参.
17 //2. 传址是将形参与实参同时指向一个地址.
18 //如果在数据较大的情况下使用传值的方式必然会影响程序性能, 所以当数据较大时可以使用传址的方式.使用传址的方式会让程序的效率大大提升.
19 static void Myfuntion(int i , int t) //这个函数将以传值的方式运行
20 {
21 if (i > t)
22 i += 5;
23 else
24 t += 5;
25 }
26
27 static void Myfuntion1(ref int i, ref int t) // 这个函数将会以传址的方式进行运算. 因为前面加了ref关键字, 函数只要加了ref关键字就会是以传址的方式进行运算
28 {
29 if (i > t)
30 i += 5;
31 else
32 t += 5;
33 }
34
35 static void Myfuntion2(int[] array) //这里注意, 这个函数没有带ref关键字, 但是也是以传址的方式进行运算. 因为在C#中,引用类型都是以传址的方式进行运算,而array属于数组, 数组又属于引用类型,所以....
36 {
37 for (int i = 0; i < array.Length; i++)
38 {
39 array[i] = 40;
40 }
41 }
42
43 static void Myfuntion3 (int i , int t , out int s) //这个函数虽然返回值为Void(代表没有返回值) , 其实有返回值 因为我们加了一个新的关键字, out , 这个关键字能够将 s 单独返回. 同样out关键字也是以传址的方式进行运算的. 还有,out 参数可以不用赋值,即使你赋值了也会被忽略
44 {
45 s = 50;
46 if (i > t)
47 i += 5;
48 else
49 t += 5;
50 }

定义一个3行2列的二维数组,元素类型为int:
int[,] values={{1,2},{3,4},{5,6}};
values[0,1]=100; //修改第一行第二列元素的值为100(本来是2)。

楼主,麻烦你说清楚点行不……你指的传值是空数组,还是有数值的数组呢?

一维数组
int[] arr;
arr = new int[5];
System.Console.WriteLine(arr[4]);
初始化

C# 数组元素可以在创建时使用
int[] arr2Lines;
arr2Lines = new int[5] {1, 2, 3, 4, 5};
但 C# 初始值设定项的数目必须与数组大小完全匹配,也可以使用在同一行中声明并初始化 C# 数组:
int[] arr1Line = {1, 2, 3, 4, 5};
此语法创建一个数组,其大小等于初始值设定项的数目。

在程序循环中初始化
在 C# 中初始化数组的另一个方法是使用 for 循环。下面的循环将数组的每个元素都设置为零:

int[] TaxRates = new int[5];

for (int i=0; i<TaxRates.Length; i++)
{
TaxRates[i] = 0;
}

交错数组
在下面的交错数组中,第一行有四项,而第二行有三项:

int[][] jaggedArray = new int[2][];
jaggedArray[0] = new int[4];
jaggedArray[1] = new int[3];

多维数组
使用以下语法声明多维矩形数组:

int[,] arr2D;
float[,,,] arr4D;
声明之后,可以按如下方式为数组分配内存:

arr2D = new int[5,4];
然后,可以使用以下语法访问数组的元素:

arr2D[4,3] = 906;
由于数组是从零开始的,因此此行将第四行第五列中的元素设置为 906。

初始化
可以使用以下一种方法,在同一个语句中创建、设置并初始化多维数组:

int[,] arr4 = new int [2,3] { {1,2,3}, {4,5,6} };
int[,] arr5 = new int [,] { {1,2,3}, {4,5,6} };
int[,] arr6 = { {1,2,3}, {4,5,6} };

以上引用别人的答案,自己删除了一些内容;

以下属于个人对数组的添加:

动态数组:
添加using System.Collections.ArrayList;
声明:
ArrayList a = new ArrayList();
赋值:a.Add(object value);//object value可以是任何类型数值
插入值:a.Insert(int index,object value);//int index在第几个索引插入值;object value可以是任何类型数值;
将动态数组转换为字符串数组:
string[] aa=new string[a.Count];
for(int i=0;i<a.Count;i++)
{
aa[i] = a[i].ToString();
}

初始化的时候直接赋值:int[] a={1,2,3};//这样直接规定死数组大小和值
int[] a=new int[3];int[0]=1;int[1]=2;int[2]=3;//这样初始化时只规定大小,后面才对每个一数进行赋值
动态获取值:int[] a;//定义一个数组
public int[] getInt()
{//假设你处理后得到一个int[]的数组b
int[] b={1,2,3,4,5};
return b;
}
a=b;//这一步可以直接赋予数组a的所有值

string[] s = new string[] { "1", "2", "3" };

去看视频教程

string[] s = new string[] { "1", "2", "3" };


长春市18040925205: c#.NET中如何给一个数组传值 -
史律氯沙: 楼主,麻烦你说清楚点行不……你指的传值是空数组,还是有数值的数组呢? 一维数组 int[] arr; arr = new int[5]; System.Console.WriteLine(arr[4]); 初始化 C# 数组元素可以在创建时使用 int[] arr2Lines; arr2Lines = new int[5] {1, 2, 3, 4, 5}; 但 C...

长春市18040925205: .NET C# 中怎样把数据库中的记录按字段把值传给一个ArrayList数组元素,给个例子就行了.
史律氯沙: SqlConnection con = new SqlConnection(); con.ConnectionString = ConfigurationManager.ConnectionStrings[1].ConnectionString; SqlCommand cmd=new SqlCommand(); cmd.CommandText="select * from 系统参数表"; cmd.Connection=...

长春市18040925205: 在C#中怎样给数组赋值? -
史律氯沙: 看你的问题似乎是下拉框绑定的问题啊,下面是绑定下拉框的代码.DataView Dv; Dv = 你的DataSet.Table[0].DefaultView; //数据库里查出的数据 this.DropDownList1.DataSource = Dv; this.DropDownList1.DataTextField = "Name"; //数据库...

长春市18040925205: C#中怎么向数组中输入值 -
史律氯沙: using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace case0401_11 {class Program{static void Main(string[] args){string[] a = new string[] {"春天","夏天","秋天","冬天" }; //创建...

长春市18040925205: C#中如何将输入的字符串赋值到数组 -
史律氯沙: 改用List<string>吧.方法一是没有new(没有分配空间) 方法二是在new的时候没有指定大小,默认是0个元素,所以对其任意一个元素赋值都是越界.在C#中,数组一般用来存放大小确定的数据. 如果数组大小未知,建议使用List<>.List<string...

长春市18040925205: C#怎么把一个数组赋值给一个二维数组,新手求解 -
史律氯沙: 有两种方法:方法1:在定义数组时赋值//定义一个2*3数组 int[,] a = new int[2,3] { { 1, 2, 3 }, { 4, 5, 6 } };或者//定义一个2*3数组,行数和列数由初始值列表决定 int[,] a = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };方法2:用循环赋值// 定义一个2*3数组 int[,] a = new int[2, 3]; // 在循环中赋值 for(int i=0;i{ for (int j = 0; j { a[i, j] = i + j; } }

长春市18040925205: c#数组给数组赋值 -
史律氯沙: static int Locate(Card[] people, long cardNo) { for (int i = 0; i < people.Length; i++) { if (people[i].CardNo == cardNo) ...

长春市18040925205: c#如何把一组数组赋值给另一组 -
史律氯沙: int[] a = { 1, 2, 3, 4 };int[] b;b = a; //赋值for( int i=0; i<b.Length; i++){Console.WriteLine(b[i]);}

长春市18040925205: c#的Socket,如何发送数组类型的值,如string[] -
史律氯沙: 假设要发送的字符串数组为string[] array12345678910111213 byte[] buffer; using(MemeoryStream stream = newMemeoryStream()) { using(BinaryWirte wr = newBinaryWirte(stream)) { for(inti = 0; i < array.Length; i++) { wr.Write(array[i]); } } //转换...

长春市18040925205: C# 传入数组参数 -
史律氯沙: C#在安全模式下不允许这样,你可以不改变temp的声明形式 在temp函数体里面第一句写上n++ 注意同时判断n++是否超过索引,可以try一下来容错

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网