zoukankan      html  css  js  c++  java
  • CSharp

    来源

    int类型变量之间运算,无论是加减乘除得到的结果都是int类型,如果有一个更大范围的变量类型参与运算,那就是最大类型的,比如double

    int a = 10;
    int b = 3;
    double c = a / b;
    Console.WriteLine(c);//3
    
    double d = a * 1.0 / b;
    Console.WriteLine(d);//3.33333333...
    
    double e = 10;
    var f = e / b;
    Console.WriteLine(f.GetType());//System.Double
    
    Console.ReadLine();

    其实上面的道理很简单,比如100以内范围的数字,两个相加求平均,无论如何都小于100,一旦有一个数字是大于一百的,那平均数就可能大于100了,即,有一个数字超出预订范围,那结果可能也会超出小的那个范围圈!

    保留指定位数小数:“{0:0.00}”,d

    //保留n位小数
    Console.WriteLine("{0:0.00},{1}", d, d);//3.33

     @符号在C#中有两个作用
    作用1、在字符串的前面加@表示取消字符串中的转义
    例如 string path=@"d: ootsubdir";
    作用2、如果用户定义的对象名和系统关键字冲突,可以在变量前面加入@
    例如 string @Class="this is a test";

    int a = 5;
    int b = a++ + ++a * 2 + --a + a++;
    Console.WriteLine(a);//7
    Console.WriteLine(b);//31

    上面说明,变量在参与运算时,无论是前置还是后置++/--,其在运算式中确定具体值后立即执行相关运算效果!

    5+7*2+6+6=31

    三个+1 ,一个-1,总体+2

     有几个变量参与运算的符号,就叫几元运算符......加减乘除都叫二元运算符!

    switch + while + try catch

    int str;
    bool flag = true;
    while (flag)
    {
        Console.WriteLine("请输入你的数字");
        try
        {
            str = Convert.ToInt32(Console.ReadLine());
    
            switch (str % 3)
            {
                case 1:
                case 2:
                    Console.WriteLine("余数为1或2");
                    break;
                default:
                    Console.WriteLine("整除");
                    break;
            }
            Console.WriteLine("你输入的数字为{0}", str);
        }
        catch (Exception)
        {
            Console.WriteLine("输入有误。。。程序结束");
            flag = false;
        }
    }
    Console.ReadKey();

    枚举类型可以和int互转,如果int值超出了枚举的数量范围,那么转换后还是int类型。。。

    所有的类型都可以用ToString()转换成string类型。

    字符串类型的数字转换为枚举类型。。。State steta = (State)Enum.Parse(typeof(State), i);

    class Program
    {
        static void Main(string[] args)
        {
            //将string 类型的数字转化为枚举。。。如果数字超出,那就输出数字,如果非数字就报错
            string i = "1";
            State steta = (State)Enum.Parse(typeof(State), i);
            Console.WriteLine("{0}的类型是{1}", steta, steta.GetType());//Busy的类型是ConsoleApp4.State
            Console.ReadLine();
        }
    }
    public enum State
    {
        Online,
        Busy,
        Offline
    }
    View Code

     并不是所有非数字的字符串都会报错,如果字符串为枚举中有的值,那么输出该枚举类型的值,不会报错!

    枚举转string,直接ToString()

    结构体:可以一次性声明多个不同类型的变量:struct

    和类的区别:

      不能继承其他结构或类,也不能作为基础结构被其他结构或类继承

      可以实现多个接口、可以不使用new操作符 即可实例化

      类是引用类型,结构是值类型  (对象是引用类型,枚举、int、double等基本类型都是值类型)

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

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

      类的对象是存储在堆空间,结构存储在栈空间,堆空间大,但是访问速度慢,栈小速快

      类是对对象的引用地址的传递,结构是对象的直接拷贝

    c#中简单类型,int、double、bool等都是结构类型!

    结构中属性和方法默认都是private

    public struct Student
    {
        public string Name;
        public int Age;
        public string SchoolName;
        public string Say()
        {
            return $"{Name}说:我今年{Age}岁了,我在{SchoolName}读书";
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Student xiaoming;
            xiaoming.Name = "小明";
            xiaoming.Age = 23;
            xiaoming.SchoolName = "东风小学";
            Console.WriteLine(xiaoming.Say());
            Console.ReadLine();
        }
    }
    View Code

     结构中的属性叫字段,需要修饰符public,private等,而基本类型int等变量在声明时不需要这些修饰符(写了会报错)

    字段可以存储多个值,而变量只能存储一个值!这是本质的区别

    结构中字段命名最好前面加个下划线。。。

    结构其实也是一个类型,上例中xiaoming这个变量的类型就是Student这个结构类型。

    上面实例化就没有使用new,就跟声明变量一样,当然也可以使用new来实例化:

    Student xiaolan = new Student
    {
        Name = "小兰",
        Age = 33,
        SchoolName = "西门小学"
    };
    Console.WriteLine(xiaolan.Say());//小兰说:我今年33岁了,我在西门小学读书
  • 相关阅读:
    浅谈prufer编码
    数据结构训练之三
    博弈论训练之一
    动态规划训练之十三
    杂题训练之七
    奇技淫巧训练之八
    浅谈博弈论
    浅谈卡特兰数
    奇技淫巧训练之七
    浅谈概率期望的一些例题
  • 原文地址:https://www.cnblogs.com/stickcsharp/p/12418541.html
Copyright © 2011-2022 走看看