• .net技术第一章



    .NET

    由微软公司提供的免费、跨平台的开源通用开发平台,可用于开发许多不同类型的应用,如:Web,移动设备,PC桌面端等

    C# (C Sharp)的特点

    • 是一种现代的、简洁而类型安全的面向对象编程语言
    • C#源于C 语言系列,采用与C、C++或Java一致的花括号({和})语法
    • 能与.NET Framework完美结合

    C# 的应用范围

    • 控制台应用
    • 桌面应用
    • UWP应用
    • Web应用开发:ASP.NET、Web服务等
    • Windows Presentation Foundation(WPF)应用程序开发
    • 跨平台:移动应用、智能手机应用开发
    • Windows服务
      ……

    .NET Framework

    • C# 程序在 .NET Framework 上运行
    • .NET Framework是一个开发和运行环境,可以使不同的编程语言(如C#、VB.net等)和运行库能够无缝地协同工作,简化开发和部署各种网络集成应用程序或独立应用程序
      在这里插入图片描述
      在这里插入图片描述

    1.2 创建简单的C#程序

    • 引用命名空间
    • 定义命名空间
    • 自定义类
    • 定义静态Main方法
    • 调用Console类的静态方法输出
     //c:\CSharpBook\Chapter01\Hello.cs   A "Hello World!" program
    02 // compile:csc Hello.cs  -> Hello.exe
    03 using System;
    04 namespace CSharpBook. Chapter01
    05 {
    06     class HelloWorld
    07    {
    08         static void Main() 
    09         {
    10              Console.WriteLine(“Hello World!);
    11         }
    12     }
    13 }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    结构和书写规则

    在这里插入图片描述

    在这里插入图片描述

    类型的声明和使用

    声明类的基本语法为:
    
    [类修饰符] class 类名 
    {
        类体
    }[;]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    声明字段和方法:
    
    [字段修饰符] 类型 字段名
    [方法修饰符] 返回值类型  方法名 ([形参列表])
    {
        方法体
    }[;]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    类名 对象名= new 类名 ([参数表]); //创建对象
    对象名.属性                                        //访问对象属性
    对象.方法名([实参列表])
    
    • 1
    • 2
    • 3

    类型的声明和使用

    // compile:csc Point.cs  -> Point.exe
    using System;
    namespace CSharpBook.Chapter01
    {
        public class Point    //声明类Point
        {
            public int x, y;    //声明字段x和y,表示坐标点(x,y)
            public Point(int x, int y)  //构造函数
            {
                this.x = x; this.y = y;
            }
            public double Distance(Point p)
            { //声明方法Distance,计算并返回该对象(坐标点)
                //与对象p(另一坐标点)的距离
                return Math.Sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
            }
        }
    
    
        class PointTest
        {
            static void Main()
            {
                Point p1 = new Point(0, 4);       //创建对象p1(坐标点1)
                Point p2 = new Point(3, 0);       //创建对象p2(坐标点2)
                double dist = p1.Distance(p2);      //调用对象p1的方法Distance
                //访问p1的属性x和y
                Console.WriteLine("点p1的坐标为:(" + p1.x + "," + p1.y + ")");
                //访问p2的属性x和y
                Console.WriteLine("点p2的坐标为:(" + p2.x + "," + p2.y + ")");
                Console.WriteLine("两点之间的距离为:" + dist); Console.ReadKey();
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    命名空间

    • C#程序是利用命名空间组织起来的。为了有效地组织C#程序中的类型并保证其唯一性,C#引入了命名空间的概念,从而最大限度地避免类型重名错误。

    • 命名空间是一种逻辑组合。C#程序中类型由指示逻辑层次结构的完全限定名(fully qualified name)描述。例如,CSharpBook. Chapter01. HelloWorld表示CSharpBook命名空间的子命名空间Chapter01中的HelloWorld类

    • 声明格式如下:

    •                                 namespace 命名空间名称
      
      • 1
    • 一个源程序文件中可以包含多个命名空间;同一命名空间可以在多个源程序文件中定义。命名空间可以嵌套。同一命名空间中不允许定义重名的类型

    使用方法

    • 访问命名空间:[.].类型
      using 命名空间 可以非限定方式直接引用该命名空间中的类型

    • 命名空间别名:using 别名 = 命名空间或类型名;
      分别用“别名::类型”,“别名.方法”进行调用

    • 全局命名空间:使用全局命名空间限定符global::

    命名空间举例

    // compile:csc AliasNSTest.cs  ->  AliasNSTest.exe
    using AliasNS = System;
    using AliasClass = System.Console;
    namespace CSharpBook.Chapter01
    {
        class AliasNSTest
        {
            static void Main()
            {   
                // AliasNS.Console.WriteLine("Hi 1");  // 错误!
                  AliasNS::Console.WriteLine("Hi 2"); // OK
                // AliasClass::WriteLine("Hi 3"); // 错误!
                  AliasClass.WriteLine("Hi 4"); // OK
                  AliasClass.ReadKey();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    // compile:csc GlobalNSTest.cs  ->  GlobalNSTest.exe 
    using System;
    namespace CSharpBook.Chapter01
    {
        class GlobalNSTest
        {
            // 定义一个名为'System'的新类,为系统制造麻烦.
            public class System { }
            // 定义一个名为'Console'的常量,为系统制造麻烦.
            const int Console = 7;
            const int number = 66;
            static void Main()
            {
                // Console.WriteLine(number);  // 出错:访问TestApp.Console
                global::System.Console.WriteLine(number);   //OK!访问正确的命名空间中的类型
                global::System.Console.ReadKey();
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    注释

    • C#使用传统的C风格注释方式
      单行注释使用“// … ”
      多行注释使用“/* … /”
      内联注释:多行注释放在一行代码中,该行中置于“/
      ”和“*/”字符之间

    • XML文档注释
      以3个斜杠(///)开头的单行注释

    Main方法

    • Main方法声明
    • C#的可执行程序必须包含一个Main方法,用于控制程序的开始和结束
    • C#中所有的Main方法都是静态的,使其不必依赖于类的实例对象而执行
    • 如果有多个Main方法,可以使用/main选项,其后跟Main方法所属类的全名(包括命名空间),明确告诉编译器将哪个方法作为程序的入口点

    在这里插入图片描述

    命令行参数

    Main方法的参数是表示命令行参数的String数组
    通过测试args.Length属性来检查参数是否存在
    args[0]表示第一个参数,args[1]表示第二个参数

    在这里插入图片描述

    Main返回值

    Main方法可以是void类型,也可以返回整型值int。如不需Main返回值,可用void使代码变简洁

    控制台输入和输出

    • System.Console类
      表示控制台应用程序的标准输入流、输出流和错误流

    • 格式化输出:
      Console.WriteLine(复合格式字符串, 输出对象列表);

    • System. Console类常用方法
      在这里插入图片描述

    例子

    using System;
    namespace CSharpBook.Chapter01
    {
        class ConsoleIO
        {
            static void Main(string[] args)
            {
               Console.Clear();                      //清屏
               Console.Write("请输入您的姓名:");    //提示输入
               String s = Console.ReadLine();          //读取1行,以回车结束
               Console.Beep();                      //提示音
               Console.WriteLine("欢迎您!" + s);     //输出读取的内容
               Console.Read();                      //按回车键结束
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    格式化

    //Console.WriteLine(“(C) Currency: {0:C}\n(E) Scientific:{1:E}\n”, -123, -123.45f);
    
    using System;
    namespace CSharpBook.Chapter01
    {
        class ComFormat
        {
           static void Main(string[] args)
           {
              Console.WriteLine("{0:C3}", 12345.6789); // 显示: ¥12,345.679
              Console.WriteLine("{0:D8}", 12345);     // 显示: 00012345
              Console.WriteLine("{0:E10}", 12345.6789); // 显示: 1.2345678900E+004
              Console.WriteLine("{0:F3}", -17843);      // 显示:  -17843.000
              Console.WriteLine("{0:00000.000}", 123.45);// 显示: 00123.450
              Console.WriteLine("{0:#####.###}", 123.45); // 显示: 123.45
              DateTime date1 = new DateTime(2014, 4, 10, 6, 30, 0);
              Console.WriteLine(date1.ToString("yyyy/MM/dd hh:mm:ss")); //显示: 2014/04/10 06:30:00
              Console.ReadKey();
           }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    突破限制, 访问其它 Go package 中的私有函数
    在 Streamlit 中使用自定义 CSS 创建加密仪表板
    Mock测试
    当下、百年之计与蝼蚁一生——读《原则2 :应对变化中的世界秩序》(下)...
    java打印杨辉三角形
    Spark(2)-基础tranform算子(一)
    使用LevelDB 实现富查询
    在Winform中一分钟入门使用好看性能还好的Blazor Hybrid
    【LeetCode:1465. 切割后面积最大的蛋糕 | 贪心 + 排序】
    基于SpringBoot的教务管理系统
  • 原文地址:https://blog.csdn.net/weixin_51422230/article/details/127681857