菜鸟C#之旅途-----结构体&&枚举&&数组

常量:----永远不变的量

常量的声明:  Const 类型 常量名=常量值  

                        const int num=10 ;  

变量----- 经常会改变值的量

结构体(struct):

在C#中,结构体是值类型数据结构,它使得一个单一变量可以存储各种数据类型的相关数据

Struct 关键字用于创建结构体。

举例:  

在图书馆中每本书有很多属性:   title,author,subject ,  bookID

定义结构体: 

当我们在定义结构体的时候必须使用 struct语句

扫描二维码关注公众号,回复: 6672224 查看本文章

struct语句为程序定义了一个带有多个成员的新的数据类型

举个栗子:

//定义结构体
struct Books
{
   public string title;
   public string author;
   public string subject;
   public int book_id;
};
//调用结构体
public static void Main(string[] args)
   {

      Books Book1;        /* 声明 Book1,类型为 Book */
      Books Book2;        /* 声明 Book2,类型为 Book */

      /* book 1 详述 */
      Book1.title = "C Programming";
      Book1.author = "Nuha Ali"; 
      Book1.subject = "C Programming Tutorial";
      Book1.book_id = 6495407;
声明一个结构体:
 public struct person
        {
            public string _name; //字段

            public char _gender;

        }

调用结构体: 
Person laosu;
Laosu._name   //输入点后就会自动显示出来;

很多人会对类和结构之间搞混,其实他们之间是有很大的差别的:

类VS结构体:

1.类是引用类型,结构是值类型

2.结构不支持继承

3.结构不能声明默认的构造函数

4.结构体中声明的字段无法赋初值,类可以

比如:

struct test001
{
    private int aa = 1;
}

执行以上代码将出现“结构中不能实例属性或字段初始值设定”的报错,而类中无此限制,代码如下:

class test002
{
    private int aa = 1;
}

枚举法:

枚举是一组命名整型常量,枚举类型是使用enum关键字声明的

举个栗子:

enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

    static void Main()
    {
        int x = (int)Day.Sun;
        int y = (int)Day.Fri;
        Console.WriteLine("Sun = {0}", x);
        Console.WriteLine("Fri = {0}", y);
    }

结果:
Sun = 0
Fri = 5

注: 结构体和枚举可以一起使用:

Public enum Gender  
{
	男,
	女
}
//声明了一个枚举 ;


Public struct Person 
{
	Public string _name ;
	Public int _age;
	Public  Gender _gender ;
	
	}

使用: 
Class Program 
{
	Static void main(string() args)
	{
		Person zsperson;
		Zsperson._name="张三";
		Zsperson._age=90;
		Zsperson._gender=Gender.男;
		
	}

}

数组:

数组是一个存储相同类型元素固定大小的顺序集合

数组用来存储数据的集合,通常认为数组是一个同一类型变量的集合

//数组声明:

第一种方式:  Int[]  number=new int[] {2,4,5}   初始化数组

第二种方式:  int[] nus= new int[10]    初始化数组

在nus的内存中存入了10个 int 类型的空间 ;

第三种方式: datatype[]  arrayName;

  • datatype 用于指定被存储在数组中的元素的类型。
  • [ ] 指定数组的秩(维度)。秩指定数组的大小。
  • arrayName 指定数组的名称。

几乎任意类型都可以声明数组:

Int 【3】

 int【】 nums={ 5,3,8}

Int【】 number=new int【3】{1,3,5} //个数和声明数必须一致

Int [] number=new int[] {2,4,5}

举个栗子:
//在一次语文测试后,老师让班长统计每一个学生的成绩并计算全班的平均成绩,
            //然后把所有成绩显示出来
            Console.WriteLine("请输入班级人数");
            int number = 0;
            int sum = 0;
       
            if (int.TryParse(Console.ReadLine(), out number))
            {
                int[] scores = new int[number];//声明一个数组用来存成绩
                for (int i = 0; i < number; i++)
                {
                    Console.WriteLine("请输入第{0}个人的成绩", i + 1);
                    scores[i] = int.Parse(Console.ReadLine());//把用户输入的成绩转换为int类型并存入到数组中

                    sum += scores[i];//求和
                }

                Console.WriteLine("总成绩为{0},平均成绩为{1}",sum, sum / number);
            }
            else
            {
                Console.WriteLine("输入有误");

            }

            Console.ReadKey();

 知识点延伸:

三种方法转换字符串变成数字

  1. Convert.toint32(age);
  2. Int age=int.parse(字符串类型的数值)

虽然这俩种方法都能把字符串类型的数字转换成数字,但是如果输入的不是数字型的字符串就会报错

 

 

第三种方法:

 strNUM是字符串类型的。

Int num=0

 bool result = Int.TryParse(strNUM,out int age)

这个方法的返回值是 Bool类型,或者 直白一点,这一行代码int.tryparse()要用bool类型的变量来接收

下面用一个例子来解释:

int i = -1;
bool b = int.TryParse(null, out i);
执行完毕后,b等于false,i等于0,而不是等于-1,切记。
int i = -1;
bool b = int.TryParse("123", out i);
执行完毕后,b等于true,i等于123;

int.TryParse与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。 

 求数组中的最大值和最小值: 

//求数组最大值 ;
            int[] numbers = new int[] { 1, 3, 4, -556, 5, 4, 34, 64, 34 };
            int temp = int.MinValue ;
            for (int i = 0; i < numbers.Length; i++)
            {
                if (numbers[i] > temp)
                {
                    temp = numbers[i];
                }

            }
            Console.WriteLine("最大的值为{0}", temp);
            Console.ReadKey();


//求数组的最大值和最小值
            int[] numb = new int[] { 2, 43, 55, 23, -45, 54 };
            int min = int.MaxValue;// 最小值
            int max = int.MinValue;

            for (int i = 0; i < numb.Length; i++)
            {
                if (numb[i] > max)
                {
                    max = numb[i];
                }

                if (numb[i] < min)
                {
                    min = numb[i];
                }
            }
            Console.WriteLine("最大值为{0}",max);
            Console.WriteLine("最小值为{0}",min);
            Console.ReadKey();

可变数组: Parames数组

一般情况下的数组:

 static void Main(string[] args)
        {

            show("{0}{1}{2}{3}{4}{5}{6}{7}{8}", 1, "2", 4, 5, 6, 7, 8, 4, 6);



        }

        public static void show(string str, params int []strs)
        {
            

        }

这个时候系统就会报错,因为这里的类型无法正常匹配,但是我们如果用了可变数组,效果就杠杠的!

可以将代码改成:

 static void Main(string[] args)
        {

            show("{0}{1}{2}{3}{4}{5}{6}{7}{8}", 1, "2", 4, 5, 6, 7, 8, 4, 6);



        }

        public static void show(string str, params object []strs)
        {
            

        }

这样就可以正常运行而且不会报错了

猜你喜欢

转载自blog.csdn.net/qq_30631063/article/details/85117986