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岁了,我在西门小学读书
原文地址:https://www.cnblogs.com/stickcsharp/p/12418541.html