zoukankan      html  css  js  c++  java
  • C#基本语法

    C#基本语法

    0.类的实例化

    MyPlane plane = new MyPlane(); //类的实例化

    1.参数输出语句

    static void Main(string[] args)
    {
        Console.WriteLine("A:{0},a:{1}",65,97);
        Console.ReadLine();
    }
    

    运行结果:

    A:65, a:97

    当 WriteLine() 函数有多个参数时,输出第一个参数中的内容,而第二个参数中的内容替换掉第一个参数中对应位置的占位符一起输出。

    2.System命名空间

    Int 相当于 System.Int32

    double 相当于 System.Double

    string 相当于 System.String

    Console类也是System命名空间包含的类

    一般在程序的开头添加 using System,这时int相当于System相当于System.Int32

    3.数据类型

    在C#中,变量分为以下几种类型:

    • 值类型(Value types)

      值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。

      值类型直接包含数据。比如 int、char、float,它们分别存储数字、字符、浮点数。当您声明一个 int 类型时,系统分配内存来存储值。

    • 引用类型(Reference types)

      引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。

      换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有:objectdynamicstring

      • 对象类型(Object)

        装箱和拆箱

      • 动态类型(Dynamic)

      • 字符串类型(String)

        字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。

        C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符()当作普通字符对待,比如:

        String str = @"C:Windows";

        等价于

        String str = "C:\Windows";

    • 指针类型(Pointer types)

      指针类型变量存储另一种类型的内存地址。

      声明指针类型的语法:

      type* identifier;
      

      例如:

      int* a;

      char* b;

    4.类型转换

    隐式转换 :C# 默认的以安全方式进行的转换。本质是从小存储容量数据类型自动转换为大存储容量数据类型,从派生类转换为基类。

    namespace TypeConvertion
    {   class Class1
        {
    
        }
    
        class Class2 : Class1 //类Class2是类Class1的子类
        {
    
        }
        class Program
        {
            static void Main(string[] args)
            {
                int inum = 100;
                long lnum = inum; // 进行了隐式转换,将 int 型(数据范围小)数据转换为了 long 型(数据范围大)的数据
                Class1 c1 = new Class2(); // 这里也是隐式转换,将一个新建的 Class2 实例转换为了其基类 Class1 类型的实例 C1
            }
        }
    }
    

    显式转换 :通过用户使用预定义的函数显式完成的,显式转换需要强制转换运算符。

    转换类型的范围大小和从属关系和隐式转换相反。显式转换可能会导致数据出错,或者转换失败,甚至无法编译成功。

    double dnum = 100.1;
    int ifromd = (int)dnum; //double类型显式转换转为int类型
    
    
    Class1 c11 = new Class1();
    Class2 c22 = c11 as Class2; //使用as进行显式转换
    Console.WriteLine(c22 is Class1);
    Console.WriteLine(c22 is Class2);
    

    运行结果:

    FALSE

    FALSE

    类型之间的转换 - Convert和Parse

    string locstr = 123.ToString();
    
    //如果要将"locstr"转成整型数
    
    //方法一: 用 Convert 
    int i = Convert.ToInt16(locstr);
    
    //方法二: 用 Parse
    int ii = int.Parse(locstr);
    

    Convert.ToInt32()与int.Parse()的区别

    (1) 这两个方法的最大不同是它们对 null 值的处理方法: Convert.ToInt32(null) 会返回 0 而不会产生任何异常,但 int.Parse(null) 则会产生异常。

    (2) 对数据进行四舍五入时候的区别

    • a. Convert.ToInt32(double value) 如果 value 为两个整数中间的数字,则返回二者中的偶数;即 3.5 转换为 4,4.5 转换为 4,而 5.5 转换为 6。不过 4.6 可以转换为 5,4.4 转换为 4 。
    • b. int.Parse("4.5") 直接报错:"输入字符串的格式不正确"
    • c. int(4.6) = 4 Int 转化其他数值类型为 Int 时没有四舍五入,强制转换。

    (3) 对被转换类型的区别 int.Parse 是转换 String 为 int, Convert.ToInt32 是转换继承自 Object 的对象为 int 的(可以有很多其它类型的数据)。你得到一个 object 对象, 你想把它转换为 int, 用 int.Parse 就不可以, 要用 Convert.ToInt32。

    5.注

    用户输入的东西,即 Console.ReadLine() ,一定是以字符串形式表现的。

    所以需要如下代码读取数字:

    class 测试
    {
        static void Main(string[] args)
        {
            int a = int.Parse(Console.ReadLine()); 
            Console.WriteLine("{0}",++a); 
            Console.ReadKey();
        }
    }
    
  • 相关阅读:
    CF1375 题解
    CF1381 题解
    CF1394 题解
    CF1383 题解
    git pull提示You are not currently on a branch. Please specify which
    centos6 YUMREPO ERROR ALL MIRROR URLS ARE NOT USING FTP, HTTP[S] OR FILE
    git报错fatal protocol error bad pack header
    Mongo服务器管理之部署MongoDB讨论
    Mongo服务器管理之备份
    Mongo服务器管理之监控MongoDB
  • 原文地址:https://www.cnblogs.com/stupiderman/p/9533294.html
Copyright © 2011-2022 走看看