• C#简述(一)


    详情请参考:http://www.runoob.com/csharp/csharp-tutorial.html

    1.C# 是一个简单的、现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的。C# 编程是基于 C 和 C++ 编程语言的。

    2.C# 环境:可使用Visual Studio(VS)

    3.一个 C# 程序主要包括以下部分:

    • 命名空间声明(Namespace declaration)
    • 一个 class
    • Class 方法
    • Class 属性
    • 一个 Main 方法
    • 语句(Statements)& 表达式(Expressions)
    • 注释
     1 using System;
     2 namespace HelloWorldApplication
     3 {
     4    class HelloWorld
     5    {
     6       static void Main(string[] args)
     7       {
     8          /* 我的第一个 C# 程序*/
     9          Console.WriteLine("Hello World");
    10          Console.ReadKey();
    11       }
    12    }
    13 }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace HelloCSharp
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello C#");
                Console.ReadKey();
            }
        }
    }

    注意事项:

    • C# 是大小写敏感的。
    • 所有的语句和表达式必须以分号(;)结尾。
    • 程序的执行从 Main 方法开始。
    • 与 Java 不同的是,文件名可以不同于类的名称。

    编译 & 执行 C# 程序

    新建 Visual C# Console Application,写入代码启动或F5

    4.C# 基本语法

    using 关键字

    在任何 C# 程序中的第一条语句都是:

    using System;
    using 关键字用于在程序中包含命名空间。一个程序可以包含多个 using 语句。

    class 关键字

    class 关键字用于声明一个类。

    C# 中的注释

    注释是用于解释代码。编译器会忽略注释的条目。在 C# 程序中,多行注释以 /* 开始,并以字符 */ 终止,单行注释是用 '//' 符号表示。

    成员变量

    变量是类的属性或数据成员,用于存储数据。

    成员函数

    函数是一系列执行指定任务的语句。类的成员函数是在类内声明的。

    实例化一个类

    通过已有的类(class)创建出该类的一个对象(object),这一过程就叫做类的实例化。
    MyPlane  plane1= new MyPlane();        //类的实例化

    标识符

    标识符是用来识别类、变量、函数或任何其它用户定义的项目。在 C# 中,类的命名必须遵循如下基本规则:

    • 标识符必须以字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。
    • 标识符中的第一个字符不能是数字。
    • 标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ' / 。
    • 标识符不能是 C# 关键字。除非它们有一个 @ 前缀。 例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字。
    • 标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
    • 不能与C#的类库名称相同。

    C# 关键字

    关键字是 C# 编译器预定义的保留字。这些关键字不能用作标识符,但是,如果您想使用这些关键字作为标识符,可以在关键字前面加上 @ 字符作为前缀。

    在 C# 中,有些关键字在代码的上下文中有特殊的意义,如 get 和 set,这些被称为上下文关键字(contextual keywords)。

    http://www.runoob.com/csharp/csharp-basic-syntax.html

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace HelloCSharp
     8 {
     9     class Animal
    10     {
    11         int age;
    12         float weight;
    13         public void AcceptDetails()
    14         {
    15             age = 3;
    16             weight = 60;
    17         }
    18         public void show()
    19         {
    20             Console.WriteLine(this.age);
    21             Console.WriteLine("Weight: {0}",weight);
    22         }
    23     }
    24     class Program
    25     {
    26         static void Main(string[] args)
    27         {
    28             Console.WriteLine("Hello C#");
    29             Console.WriteLine("A:{0},a:{1}", 65, 97);
    30             Console.WriteLine("A:{1},a:{0}", 65, 97);
    31             Animal animal = new Animal();
    32             animal.AcceptDetails();
    33             animal.show();
    34             Console.ReadLine();
    35         }
    36     }
    37 }

    5.数据类型

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

    • 值类型(Value types)
    • 引用类型(Reference types)
    • 指针类型(Pointer types)

    值类型(Value types)

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

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

    如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用 sizeof 方法。表达式 sizeof(type) 产生以字节为单位存储对象或类型的存储尺寸。

    Console.WriteLine("Size of int: {0}", sizeof(int));

    引用类型(Reference types)

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

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

    对象(Object)类型

    对象(Object)类型 是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类。Object 是 System.Object 类的别名。所以对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。

    当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱

    object obj;
    obj = 100; // 这是装箱

    动态(Dynamic)类型

    存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。

    声明动态类型的语法:

    dynamic <variable_name> = value;

    例如:

    dynamic d = 20;

    动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。

    字符串(String)类型

    字符串(String)类型 允许您给变量分配任何字符串值。字符串(String)类型是 System.String 类的别名。它是从对象(Object)类型派生的。字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号

    例如:

    String str = "runoob.com";

    一个 @引号字符串:

    @"runoob.com";

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

    string str = @"C:Windows";

    等价于:

    string str = "C:\Windows";

    @ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内

    string str = @"<script type=""text/javascript"">
        <!--
        -->
    </script>";

    用户自定义引用类型有:class、interface 或 delegate。

    指针类型(Pointer types)

    指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。

    声明指针类型的语法:

    type* identifier;

    例如:

    char* cptr;
    int* iptr;

    6.C# 类型转换

    类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在 C# 中,类型铸造有两种形式:

    • 隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。
    • 显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
            double d = 5673.74;
                int i;
                // 强制转换 double 为 int
                i = (int)d;
                Console.WriteLine(i);
                Console.ReadKey();

    C# 类型转换方法

    C# 提供了内置的类型转换方法:http://www.runoob.com/csharp/csharp-type-conversion.html

                int i = 75;
                float f = 53.005f;
                double d = 2345.7652;
                bool b = true;
    
                Console.WriteLine(i.ToString());
                Console.WriteLine(f.ToString());
                Console.WriteLine(d.ToString());
                Console.WriteLine(b.ToString());
                Console.ReadKey();

    7.C# 变量

    一个变量只不过是一个供程序操作的存储区的名字。在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。范围内的值可以存储在内存中,可以对变量进行一系列操作。C# 中提供的基本的值类型大致可以分为以下几类:

    C# 允许定义其他值类型的变量,比如 enum,也允许定义引用类型变量

    C# 中的变量定义

    int i, j, k;
    char c, ch;
    float f, salary;
    double d;

    C# 中的变量初始化

    变量通过在等号后跟一个常量表达式进行初始化(赋值)。

    int d = 3, f = 5;    /* 初始化 d 和 f. */

    接受来自用户的值

    System 命名空间中的 Console 类提供了一个函数 ReadLine(),用于接收来自用户的输入,并把它存储到一个变量中。

    int num;
    num = Convert.ToInt32(Console.ReadLine());

    函数 Convert.ToInt32() 把用户输入的数据转换为 int 数据类型,因为 Console.ReadLine() 只接受字符串格式的数据。

    C# 中的 Lvalues 和 Rvalues

    C# 中的两种表达式:

    1. lvalue:lvalue 表达式可以出现在赋值语句的左边或右边。

    2. rvalue:rvalue 表达式可以出现在赋值语句的右边,不能出现在赋值语句的左边。

    变量是 lvalue 的,所以可以出现在赋值语句的左边。数值是 rvalue 的,因此不能被赋值,不能出现在赋值语句的左边。

    8.C# 常量

    常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。

    常量可以被当作常规的变量,只是它们的值在定义后不能被修改。

    整数常量

    整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,没有前缀则表示十进制

    整数常量也可以有后缀,可以是 U 和 L 的组合,其中,U 和 L 分别表示 unsignedlong。后缀可以是大写或者小写,多个后缀以任意顺序进行组合。

    85         /* 十进制 */
    0213       /* 八进制 */
    0x4b       /* 十六进制 */
    30         /* int */
    30u        /* 无符号 int */
    30l        /* long */
    30ul       /* 无符号 long */

    浮点常量

    一个浮点常量是由整数部分、小数点、小数部分和指数部分组成。可以使用小数形式或者指数形式来表示浮点常量。

    使用小数形式表示时,必须包含小数点、指数或同时包含两者。使用指数形式表示时,必须包含整数部分、小数部分或同时包含两者。有符号的指数是用 e 或 E 表示的。

    字符常量

    字符常量是括在单引号里,例如,'x',且可存储在一个简单的字符类型变量中。一个字符常量可以是一个普通字符(例如 'x')、一个转义序列(例如 ' ')或者一个通用字符(例如 'u02C0')。

    在 C# 中有一些特定的字符,当它们的前面带有反斜杠时有特殊的意义,可用于表示换行符( )或制表符 tab( )。

    字符串常量

    字符常量是括在双引号 "" 里,或者是括在 @"" 里。字符串常量包含的字符与字符常量相似,可以是:普通字符、转义序列和通用字符。

    使用字符串常量时,可以把一个很长的行拆成多个行,可以使用空格分隔各个部分。

    定义常量

    常量是使用 const 关键字来定义的 。

    定义一个常量的语法如下:

    const <data_type> <constant_name> = value;

                const double pi = 3.14159; // 常量声明
                double r;
                Console.WriteLine("Enter Radius: ");
                r = Convert.ToDouble(Console.ReadLine());
                double areaCircle = pi * r * r;
                Console.WriteLine("Radius: {0}, Area: {1}", r, areaCircle);
                Console.ReadLine();

    Convert.ToDouble 与 Double.Parse 的区别。实际上 Convert.ToDouble 与 Double.Parse 较为类似,实际上 Convert.ToDouble内部调用了 Double.Parse:

    (1)对于参数为null的时候:

    •  Convert.ToDouble参数为 null 时,返回 0.0;
    •  Double.Parse 参数为 null 时,抛出异常。

    (2)对于参数为""的时候:

    •  Convert.ToDouble参数为 "" 时,抛出异常;
    •  Double.Parse 参数为 "" 时,抛出异常。

    (3)其它区别:

    •  Convert.ToDouble可以转换的类型较多;
    •  Double.Parse 只能转换数字类型的字符串。
    •  Double.TryParse 与 Double.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0.0。
  • 相关阅读:
    sql 语句系列(加减乘除与平均)[八百章之第十四章]
    并发系列64章(并发概要)第一章
    redis 一百二十篇(简单介绍)之第一篇
    sql 语句系列(分割ip)[八百章之第十四章]
    sql 语句系列(字符串之裂开)[八百章之第十三章]
    sql 语句系列(字符串之父与子之间)[八百章之第十二章]
    sql 语句系列(字符串的遍历嵌入删除与统计)[八百章之第十一章]
    sql 语句系列(用魔法打败魔法)[八百章之第十章]
    sql 语句系列(列举非索引外键)[八百章之第九章]
    sql 语句系列(列举系列)[八百章之第八章]
  • 原文地址:https://www.cnblogs.com/57rongjielong/p/9202905.html
Copyright © 2020-2023  润新知