下面我們繼續(xù)學(xué)習(xí)C#的語法。結(jié)構(gòu)struct,C#中的結(jié)構(gòu)和我們PLC中建立的UDT(結(jié)構(gòu)體)是一樣的。里面存儲了相關(guān)的不同類型的數(shù)據(jù)。 有一句話我覺得十分重要:方法是依存于結(jié)構(gòu)和對象存在的。這以后我們會個(gè)更加深入的學(xué)習(xí)的。 Struct結(jié)構(gòu): 可以幫助我們一次性聲明不同類型的變量。 語法: [public] struct 結(jié)構(gòu)名 { 成員; } 如下例聲明:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 草稿 8 { 9 class Program 10 { 11 public struct Person 12 { 13 public string name; 14 public int age; 15 public char gender; 16 } 17 static void Main(string[] args) 18 { 19 Person zsPerson; 20 zsPerson.name = "張三"; 21 zsPerson.age = 18; 22 zsPerson.gender = '男'; 23 24 Console.ReadKey(); 25 } 26 } 27 }
值得我們注意的是,在聲明結(jié)構(gòu)的時(shí)候,如果我們沒加public,我們是建立不了給結(jié)構(gòu)賦值的,不加public系統(tǒng)默認(rèn)為private私有的。并且我們在命名空間之下Main之上創(chuàng)建的變量其實(shí)不叫變量,而是叫字段。 變量和字段的區(qū)別在于:變量可以存一個(gè)值,之后不停被覆蓋,而字段類似我們PLC背景數(shù)據(jù),可以存儲若干個(gè)數(shù)值。 而且我在這要提出一個(gè)問題,我看了幾個(gè)視頻和數(shù)據(jù),對于字段的命名說法不一樣的,總結(jié)如下 (1)字段和變量要區(qū)別命名,例如:_Name (2)也有反對這種命名方式的,理由是:在復(fù)雜的編程任務(wù)中,可能影響與其他語言的交互引用的作用,例如VB。net。 這在以后深入學(xué)習(xí)過程中我們在慢慢體會,也歡迎大神們給我解惑。
數(shù)組 一次性存儲多個(gè)相同類型的變量。 語法: 數(shù)組的類型[] 數(shù)組名 = new 數(shù)組類型[數(shù)組長度]; 數(shù)組的長度一旦固定了,就不能在被改變了。 對于int[]類型的數(shù)組,初值為0,string[]數(shù)組初值為null,bool[]數(shù)組初值為false。 下面我們介紹幾種聲明數(shù)組的方式 int[] nums = new int[10]; //沒有聲明數(shù)組元素,推薦 int[] nums = {1,2,3,4,5,6}; //隱式聲明了元素和長度,推薦 int[] nums = new int[3]{1,2,3}; //不推薦,麻煩且長度和元素?cái)?shù)量必須一致。 int[] nums = new int[]{1,2,3,4,5}; //類似第2種 下面看一個(gè)練習(xí)1:從一個(gè)整數(shù)數(shù)組中求出最大值,最小值,總和和平均值。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 草稿 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 int[] nums = { 1,2,3,4,5,6,7,8,9,0}; 14 int max = nums[0]; 15 int min = nums[0]; 16 int sum = 0; 17 18 for (int i = 0; i < nums.Length; i++) 19 { 20 if (nums[i] > max) 21 { 22 max = nums[i]; 23 } 24 25 if (nums[i] < min) 26 { 27 min = nums[i]; 28 } 29 sum += nums[i]; 30 } 31 Console.WriteLine($"這個(gè)數(shù)組的最大值是{max},最小值是{min},總和是{sum},平均值是{sum/nums.Length}"); 32 Console.ReadKey(); 33 } 34 } 35 }
練習(xí)2: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 草稿 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 string[] names = { "老楊","老蘇","老鄒","老虎","老牛","老馬"}; 14 string str = null; 15 16 for (int i = 0; i < names.Length-1; i++) 17 { 18 str += names[i] + "|"; 19 } 20 Console.WriteLine(str+names[names.Length-1]); 21 Console.ReadKey(); 22 } 23 } 24 } 練習(xí)3:對一個(gè)整數(shù)數(shù)組做如下處理:若元素為正數(shù)將這個(gè)元素+1,若為負(fù)數(shù),將這個(gè)元素-1,元素為0,不變。 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 草稿 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 int[] nums = { 1,-2,3,-4,5,6,0}; 14 for (int i = 0; i < nums.Length; i++) 15 { 16 if (nums[i] > 0) 17 { 18 nums[i] += 1; 19 } 20 else if (nums[i] < 0) 21 { 22 nums[i] -= 1; 23 } 24 else 25 { 26 27 } 28 } 29 30 for (int i = 0; i < nums.Length; i++) 31 { 32 Console.WriteLine(nums[i]); 33 } 34 Console.ReadKey(); 35 } 36 } 37 } 練習(xí)4:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 草稿 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 string[] names = { "我","是","好人"}; 14 for (int i = 0; i < names.Length/2; i++) 15 { 16 string temp = names[i]; 17 names[i] = names[names.Length - 1 - i]; 18 names[names.Length - 1 - i] = temp; 19 } 20 for (int i = 0; i < names.Length; i++) 21 { 22 Console.Write(names[i]); 23 } 24 Console.ReadKey(); 25 } 26 } 27 }
練習(xí)5:冒泡排序:就是將一個(gè)數(shù)組中的元素從大到小,從小到大排列。 分析:需要兩個(gè)循環(huán),外層循環(huán),控制比較次數(shù),內(nèi)層循環(huán),控制交換次數(shù)。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 草稿 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 int[] nums = { 9,8,7,6,5,4,3,2,1,0}; 14 for (int i = 0; i < nums.Length-1; i++) 15 { 16 for (int j = 0; j < nums.Length-1-i; j++) 17 { 18 if (nums[j] > nums[j+1]) 19 { 20 int temp = nums[j]; 21 nums[j] = nums[j + 1]; 22 nums[j + 1] = temp; 23 } 24 } 25 } 26 for (int i = 0; i < nums.Length; i++) 27 { 28 Console.WriteLine(nums[i]); 29 } 30 Console.ReadKey(); 31 } 32 } 33 }
這里面有一點(diǎn)值得我們注意,C#中的數(shù)組下標(biāo)和我們PLC中數(shù)組下標(biāo)正好相反,C#中數(shù)組下標(biāo)的0從左面元素開始計(jì)算。 其實(shí),這種冒泡方式的寫法也就在面試的時(shí)候會用到,在我們C#中,可以直接用一個(gè)方法解決Array.Sort();(只能升序) Array.Reverse();(反轉(zhuǎn)排列)若想降序:先調(diào)用Array.Sort();后調(diào)用Array.Reverse()。 |
|
联系客服
微信扫码,添加客服企业微信
客服QQ:
1732698931联系电话:4000-999-276
客服工作时间9:00-18:00,晚上非工作时间,请在微信或QQ留言,第二天客服上班后会立即联系您。