1. 程式人生 > >C# 陣列基礎

C# 陣列基礎

/*
學習陣列
陣列在有些書裡面稱之為引用型別 ,更確切的說陣列是一種資料結構

*/
using System;


namespace _array
{
class MainClass
{
public static void Main (string[] args)
{
// 最基本的陣列
// 陣列的定義:儲存相同的資料型別的集合
//第一種寫法:動態分配記憶體空間
// int[] intArray = new int[4];//定義了一個長度為4的整型陣列,這個陣列只可以儲存行資料
//第二種寫法:
// int[] intArray = new int[]{1,2,3,4};


// 實際上我們int[] 他的原型是Array
// 而int[] 能使用 foreach 的原因歸根結底為 Array類實現了IEnumrable這個介面


//注意:初始化陣列的時候,要麼給定長度,要麼初始化陣列內的元素個數;
//訪問陣列的元素
//訪問陣列第0個位置儲存的元素
// Console.WriteLine("陣列第0個位置儲存的元素為:" + intArray[4]);
//訪問陣列第4個位置 儲存的元素,---- 訪問越界(程式奔潰)


//遍歷陣列1
// for(int i=0;i<intArray.Length;i++){
// Console.WriteLine (intArray [i]);
//
}


//遍歷陣列2
// foreach (var item in intArray) {
// Console.WriteLine (item);
// }


// 賦值
//練習,申明string,char,float,double相應型別的陣列,進行遍歷訪問
// string[] str = {"str","cha","flo","doub"};
// char[] cha = { 'a', 'b' };
// float[] flo = { 12, 12 };
// double[] doub = { 12, 12 };
// for (int i = 0; i < 4; i++) {
//
foreach (var item in str) {
// Console.WriteLine (item);
// }
// }


// 練習:分別定義練習1型別對應的Array陣列,設定陣列元素,並且遍歷所有元素
// Array strArray = Array.CreateInstance(typeof(string),3);
// Array intArray = Array.CreateInstance(typeof(int),2);
// Array floArray = Array.CreateInstance(typeof(float),5);
// Array doubArray = Array.CreateInstance(typeof(double),5);
// strArray.SetValue ("haha", 0);
// strArray.SetValue ("haha1", 1);
// strArray.SetValue ("haha2", 2);
//
//
// intArray.SetValue (1, 0);
// intArray.SetValue (2, 1);
// floArray.SetValue (1, 0);
// doubArray.SetValue (1, 0);
//
// foreach (string  item in strArray) {
// Console.WriteLine (item);
// }


// int[] array1 = { 1, 2, 3, 4, 5 };
// int[] array2 = { 6, 7, 8, 9, 10 };
//
// var se = new ArraySegment<int>[2] {
// new ArraySegment<int>(array1,0,1),
// new ArraySegment<int>(array2,2,2)
// };
//
// print (se);


//練習3:找出陣列中最大的數,以及最大值所在的位置 


// int[] intArray = { 2, 3, 4, 6, 6, 3, 5, 6, 9 };
// int maxIndex = 0;
// for (int i = 1; i < intArray.Length; i++) {
// if (intArray [maxIndex] < intArray [i])
// maxIndex = i;
// }
// Console.WriteLine ("最大值為 {0},下標為{1}", intArray [maxIndex], maxIndex);


// 練習4:定義一個整型陣列,初始化3個整型元素,打印出最大值,最小值,以及平均值
// int[] intArray = {1,2,3};
// int max=intArray[0], min=intArray[0], sum=intArray[0];
// for (int i = 1; i < 3; i++) {
// if (max < intArray [i])
// max = intArray [i];
// if (min > intArray [i])
// min = intArray [i];
// sum += intArray [i];
// }
// Console.WriteLine ("最大值為{0},最小值為{1},平均值為{2}", max, min, sum / 3);


// //練習5:定義一個數組.從鍵盤上獲取三個整形數值,打印出最大值
// int[] array = {1,2,3};
// int max = array [0];
// for (int i = 1; i < 3; i++) {
// if (max < array [i])
// max = array [i];
// }
// Console.WriteLine (max);


//練習6:拼接兩個字串陣列,到一個數組,遍歷顯示
// string[] str1 = {"hahaha","hahaha"};
// string[] str2 = { "aaaaa" };
// var se = new ArraySegment<string>[2] {
// new ArraySegment<string> (str1, 0, str1.Length),
// new ArraySegment<string> (str2, 0, str2.Length)
// };
// print(se);


// string[] str1 = {"hahaha","hahaha"};
// string[] str2 = { "aaaaa" };
// string[] str3 = new string[str1.Length + str2.Length];
// for (int i = 0; i < str1.Length; i++)
// str3 [i] = str1 [i];
// for (int i = str1.Length, j = 0; i < str3.Length; i++,j++)
// str3 [i] = str2 [j];
// for (int i = 0; i < str3.Length; i++)
// Console.WriteLine (str3 [i]);


string[] str1 = {"hahaha","hahaha"};
string[] str2 = { "aaaaa" };
string[] str3 = new string[str1.Length + str2.Length];
for (int i = 0,j=0; i < str3.Length; i++) {
if (i < str1.Length)
str3 [i] = str1 [i];
else {
str3 [i] = str2 [j];
j++;
}


}
for (int i = 0; i < str3.Length; i++)
Console.WriteLine (str3 [i]);
}






static void print(ArraySegment<string>[] segment){
foreach (var seg in segment) {
for (int i = seg.Offset; i < seg.Offset + seg.Count; i++) {
Console.WriteLine (seg.Array [i]);
}
}
}




}
}