.Net基础之5——复杂数据类型

(1)复习

1、变量

int  double   string   char   bool    decimal

变量的使用规则:先声明再赋值最后使用

2、Camo      Pascal

3、运算符

赋值运算符:=

复合赋值运算符:+=、-=、*=、/=、%=     

算数运算符:+ - * / %

关系运算符:>   <    >=    <=    ==    !=

逻辑运算符: &&        ||         !

4、C#中的语法结构

(2)常量

声明常量的语法:

const     变量类型     变量名 = 值;
const int number = 20;//常量,不能被重新赋值

(3)枚举

语法:

[public]  enum  枚举名

{
     值1,
     值2,
     值3,
     ......
}

public:访问修饰符。公开的公共的,哪都可以访问。
enum:关键字,声明枚举的关键字。
枚举名:要符合Pascal命名规范。

将枚举声明到命名空间的下面,类的外面,表示这个命名空间下,所以的类都可以使用这个枚举。

枚举就是一个变量类型,只是枚举声明、赋值、使用的方式跟普通的变量类型不一样。

 1   //声明了一个枚举Gender
 2     public enum Gender
 3     {
 4         男,
 5         女,
 6     }
 7     public enum Sesons
 8     {
 9         春,
10         夏,
11         秋,
12 13     }
14     public enum QQState
15     {
16         OnLine,
17         OffLine,
18         Leave,
19         Busy,
20         QMe
21     }
22     class Program
23     {
24         static void Main(string[] args)
25         {
26             //变量类型 变量名=值;
27             Gender gender = Gender.男;
28             Sesons s = Sesons.春;
29             QQState state = QQState.Busy;
30         }
31     }

(4)枚举类型和string以及int类型之间的转换

7、所有的类型都能够转换成string类型,调用ToString()。

1     public enum QQState
2     {
3         OnLine,
4         OffLine,
5         Leave=5,
6         Busy,
7         QMe
8     }
 1         static void Main(string[] args)
 2         {
 3             #region 将枚举类型强转成int类型
 4             QQState state = QQState.OnLine;
 5             //枚举类型默认可以跟int类型互相转换,枚举类型跟int类型是兼容的。
 6             int n = (int)state;
 7             Console.WriteLine(n);//0
 8             Console.WriteLine((int)QQState.OffLine);//1
 9             Console.WriteLine((int)QQState.Leave);//5
10             Console.WriteLine((int)QQState.Busy);//6
11             Console.WriteLine((int)QQState.QMe);//7
12             Console.ReadKey();
13 #endregion
 1  static void Main(string[] args)
 2         {
 3
14             #region 将int类型转换成枚举类型(不能转换的将输出数字)
15             int n1 = 1;
16             QQState state = (QQState)n1;
17             Console.WriteLine(state);   //OffLine
18             Console.ReadKey();
19             #endregion
20         }
 1         static void Main(string[] args)
 2         {
 3           
20             #region 将枚举类型转换成字符串类型
21             //所以的类型都可以转换成string类型
22             QQState state = QQState.OnLine;
23             string s = state.ToString();
24             Console.WriteLine(s);
25             Console.ReadKey();
26             #endregion
27         }
 1         static void Main(string[] args)
 2         {
 3           
27             //将string类型转换成枚举类型(不能转换的文本将抛异常,数字不抛异常)
28             string s = "0";
29             //将s转换成枚举类型
30             //Convert.ToString()   int.Parse()      int.TryParse()
31             //调用Parse()方法的目的就是为了让它帮助我们将一个字符串转换成对应的枚举类型
32             QQState state =(QQState ) Enum.Parse(typeof(QQState), s);
33             Console.WriteLine(state);  //OnLine
34             Console.ReadKey();
35         }
 1             //枚举练习
 2             //提示用户选择一个在线状态,我们接受,并将用户的输入转换成枚举类型
 3             //再次打印到控制台
 4 
 5             Console.WriteLine("请选择您QQ的在线状态  1--OnLine  2--OffLine  5-Leave  6--Busy  7--QMe");
 6             string s = Console.ReadLine();   //输入1
 7             //int i = int.Parse(s);
 8             //QQState state = (QQState)i;       //输出OffLine
 9 
10             //QQState state = (QQState)Enum.Parse(typeof(QQState), s);
11             //Console.WriteLine(state);       //输出OffLine
12 
13             switch (s)
14             {
15                 case "1":
16                     QQState s1 = (QQState)Enum.Parse(typeof(QQState), "OnLine");
17                     Console.WriteLine("您选择的在线状态是{0}", s1);
18                     break;
19                 case "2":
20                     QQState s2 = (QQState)Enum.Parse(typeof(QQState), "OffLine");
21                     Console.WriteLine("您选择的在线状态是{0}", s2);
22                     break;
23                 case "5":
24                     QQState s5 = (QQState)Enum.Parse(typeof(QQState), "Leave");
25                     Console.WriteLine("您选择的在线状态是{0}", s5);
26                     break;
27                 case "6":
28                     QQState s6 = (QQState)Enum.Parse(typeof(QQState), "Busy");
29                     Console.WriteLine("您选择的在线状态是{0}", s6);
30                     break;
31                 case "7":
32                     QQState s7 = (QQState)Enum.Parse(typeof(QQState), "QMe");
33                     Console.WriteLine("您选择的在线状态是{0}", s7);
34                     break;
35             }
36             Console.ReadKey();

(5)结构

可以帮助我们一次性声明多个不同类型的变量

语法:
[public] struct  结构名
{
      成员;//字段
}
变量在程序运行时只能存储一个值,而字段可以存储多个值。
 1         public   struct Person
 2         {
 3            public  string _name;  //字段
 4            public  int _age;
 5            public  char _gender;
 6         }
 7         static void Main(string[] args)
 8         {
 9             Person zsPerson; //声明
10             zsPerson.name = "张三";
11             zsPerson.age = 21;
12             zsPerson.gender = '';
13 
14             Person lsPerson; //声明
15             lsPerson.name = "李四";
16             lsPerson.age = 22;
17             lsPerson.gender = '';
18         }
 1         //练习:定义一个结构类型Person,有三个成员变量,分别为姓名、性别、年龄
 2         //性别用枚举类型
 3         //声明两个Person类型的变量,分别表示张三 男 18岁/小兰 女 16岁
12         public struct Person
13         {
14             public  string _name;
15             public int _age;
16             public Gender _gender;
17         }
18         public enum Gender
19         {
20             男,
21 22         }
23         static void Main(string[] args)
24         {
36             Person zsPerson;
37             zsPerson._name = "张三";
38             zsPerson._age = 18;
39             zsPerson._gender = Gender.男;
40             Person laPerson;
41             laPerson._name = "小兰";
42             laPerson._age = 16;
43             laPerson._gender = Gender.女;
44 
45             Console.WriteLine("{0},{1},{2}岁", zsPerson._name, zsPerson._gender, zsPerson._age);
46             Console.WriteLine("{0},{1},{2}岁", laPerson._name, laPerson._gender, laPerson._age);
47             Console.ReadKey();
48 
49         }

(6)数组的定义

一次性存储多个相同类型的变量。

****数组的长度一旦固定了,就不能改变了。超出数组长度则抛出异常。

语法:
数组类型[]  数组名=new 数组类型 [数组长度] ;
 1             int[] nums = new int[10];//声明,默认初始化都为0
 2             //赋值
 3             for(int i=0;i<nums.Length ;i++)
 4             {
 5                 nums[i] = i;
 6             }
 7             for (int i = 0; i < nums.Length; i++)
 8             {
 9                 Console.WriteLine(nums[i]);
10             }
11             Console.ReadKey();
string[] str =new string [10]; //声明,默认初始化为null。null不等于空。

bool[] bools=new bool [10];  //声明,默认初始化为false。

(7)计算数组的最大值、最小值、总和、平均值

int max = int.MinValue;
int max = int.MaxValue;

(10)方法的简介

函数就是一堆代码进行重用的一种机制。

函数的语法:
[public] static 返回值类型 方法名([参数列表])
{
      方法体;
}
public:访问修饰符,公开的,公共的,哪都能进行访问。
static:静态的。
返回值类型:如果不需要写返回值,写void。
方法名:Pascial。
参数列表:完成这个方法所必须要提供给这个方法的条件。

12、return

1)、返回要返回的值。

2)、立即结束本次的方法。

方法调用的语法:
类名.方法名([参数]);
 1        /// <summary>
 2         /// 计算两个整数之间的最大值并将最大值返回
 3         /// </summary>
 4         /// <param name="n1">第一个整数</param>
 5         /// <param name="n2">第二个整数</param>
 6         /// <returns>将最大值返回</returns>
 7         public static int GetMax(int n1, int n2)
 8         {
 9             return n1 > n2 ? n1 : n2;
10         }
11         static void Main(string[] args)
12         {
13             //计算两个整数之间的最大值
14             int max= Program.GetMax(1, 3);
15             Console.WriteLine(max);
16             Console.ReadKey();
17         }

(11)方法的细节问题

原文地址:https://www.cnblogs.com/Strugglinggirl/p/7632517.html