志在指尖
用双手敲打未来

C#的结构和数组

下面咱们继续学习C#的语法。结构struct,C#中的结构和咱们PLC中树立的UDT(结构体)是一样的。里边存储了相关的不同类型的数据。
有一句话我觉得十分重要:办法是依存于结构和对象存在的。这今后咱们会个愈加深化的学习的。
Struct结构:
能够帮助咱们一次性声明不同类型的变量。
语法:
[public]struct结构名
{
成员;
}
如下例声明:
1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading.Tasks;67namespace草稿8{9classProgram10{11publicstructPerson12{13publicstringname;14publicintage;15publicchargender;16}17staticvoidMain(string[]args)18{19PersonzsPerson;20zsPerson.name=”张三”;21zsPerson.age=18;22zsPerson.gender=’男’;2324Console.ReadKey();25}26}27}
值得咱们留意的是,在声明结构的时分,如果咱们没加public,咱们是树立不了给结构赋值的,不加public体系默以为private私有的。并且咱们在命名空间之下Main之上创建的变量其实不叫变量,而是叫字段。
变量和字段的区别在于:变量能够存一个值,之后不断被掩盖,而字段相似咱们PLC背景数据,能够存储若干个数值。c#
并且我在这要提出一个问题,我看了几个视频和数据,对于字段的命名说法不一样的,总结如下
(1)字段和变量要区别命名,例如:_Name
(2)也有反对这种命名方法的,理由是:在杂乱的编程使命中,或许影响与其他言语的交互引证的作用,例如VB。net。
这在今后深化学习过程中咱们在渐渐领会,也欢迎大神们给我解惑。
数组
一次性存储多个相同类型的变量。
语法:
数组的类型[]数组名=new数组类型[数组长度];
数组的长度一旦固定了,就不能在被改变了。
对于int[]类型的数组,初值为0,string[]数组初值为null,bool[]数组初值为false。
下面咱们介绍几种声明数组的方法
int[]nums=newint[10];//没有声明数组元素,引荐
int[]nums={1,2,3,4,5,6};//隐式声明了元素和长度,引荐
int[]nums=newint[3]{1,2,3};//不引荐,费事且长度和元素数量必须共同。
int[]nums=newint[]{1,2,3,4,5};//相似第2种
下面看一个操练1:从一个整数数组中求出最大值,最小值,总和和平均值。
1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading.Tasks;67namespace草稿8{9classProgram10{11staticvoidMain(string[]args)12{13int[]nums={1,2,3,4,5,6,7,8,9,0};14intmax=nums[0];15intmin=nums[0];16intsum=0;1718for(inti=0;i<nums.Length;i++)19{20if(nums[i]>max)21{22max=nums[i];23}2425if(nums[i]<min)26{27min=nums[i];28}29sum+=nums[i];30}31Console.WriteLine($”这个数组的最大值是{max},最小值是{min},总和是{sum},平均值是{sum/nums.Length}”);32Console.ReadKey();33}34}35}
操练2:
1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading.Tasks;67namespace草稿8{9classProgram10{11staticvoidMain(string[]args)12{13string[]names={“老杨”,”老苏”,”老邹”,”山君”,”老牛”,”老马”};14stringstr=null;1516for(inti=0;i<names.Length-1;i++)17{18str+=names[i]+”|”;19}20Console.WriteLine(str+names[names.Length-1]);21Console.ReadKey();22}23}24}
操练3:对一个整数数组做如下处理:若元素为正数将这个元素+1,若为负数,将这个元素-1,元素为0,不变。
1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading.Tasks;67namespace草稿8{9classProgram10{11staticvoidMain(string[]args)12{13int[]nums={1,-2,3,-4,5,6,0};14for(inti=0;i<nums.Length;i++)15{16if(nums[i]>0)17{18nums[i]+=1;19}20elseif(nums[i]<0)21{22nums[i]-=1;23}24else25{2627}28}2930for(inti=0;i<nums.Length;i++)31{32Console.WriteLine(nums[i]);33}34Console.ReadKey();35}36}37}
操练4:
1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading.Tasks;67namespace草稿8{9classProgram10{11staticvoidMain(string[]args)12{13string[]names={“我”,”是”,”好人”};14for(inti=0;i<names.Length/2;i++)15{16stringtemp=names[i];17names[i]=names[names.Length-1-i];18names[names.Length-1-i]=temp;19}20for(inti=0;i<names.Length;i++)21{22Console.Write(names[i]);23}24Console.ReadKey();25}26}27}
操练5:冒泡排序:便是将一个数组中的元素从大到小,从小到大摆放。
分析:需要两个循环,外层循环,操控比较次数,内层循环,操控交流次数。
1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading.Tasks;67namespace草稿8{9classProgram10{11staticvoidMain(string[]args)12{13int[]nums={9,8,7,6,5,4,3,2,1,0};14for(inti=0;i<nums.Length-1;i++)15{16for(intj=0;j<nums.Length-1-i;j++)17{18if(nums[j]>nums[j+1])19{20inttemp=nums[j];21nums[j]=nums[j+1];22nums[j+1]=temp;23}24}25}26for(inti=0;i<nums.Length;i++)27{28Console.WriteLine(nums[i]);29}30Console.ReadKey();31}32}33}
这里边有一点值得咱们留意,C#中的数组下标和咱们PLC中数组下标正好相反,C#中数组下标的0从左面元素开端核算。
其实,这种冒泡方法的写法也就在面试的时分会用到,在咱们C#中,能够直接用一个办法解决Array.Sort();(只能升序)
Array.Reverse();(回转摆放)若想降序:先调用Array.Sort();后调用Array.Reverse()。

未经允许不得转载:IT技术网站 » C#的结构和数组
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载