.net技术第一章

2023-05-16

文章目录

  • .NET
  • C# (C Sharp)的特点
  • C# 的应用范围
  • .NET Framework
  • 1.2 创建简单的C#程序
  • 结构和书写规则
  • 类型的声明和使用
  • 类型的声明和使用
  • 命名空间
    • 使用方法
    • 命名空间举例
  • 注释
  • Main方法
    • 命令行参数
    • Main返回值
  • 控制台输入和输出
    • 例子
      • 格式化


.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 }

结构和书写规则

在这里插入图片描述

在这里插入图片描述

类型的声明和使用

声明类的基本语法为:

[类修饰符] class 类名 
{
    类体
}[;]
声明字段和方法:

[字段修饰符] 类型 字段名
[方法修饰符] 返回值类型  方法名 ([形参列表])
{
    方法体
}[;]
类名 对象名= new 类名 ([参数表]); //创建对象
对象名.属性                                        //访问对象属性
对象.方法名([实参列表])

类型的声明和使用

// 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();
        }
    }
}

命名空间

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

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

  • 声明格式如下:

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

使用方法

  • 访问命名空间:[.].类型
    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();
        }
    }
}
// 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();
        }
    }
}

注释

  • 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();                      //按回车键结束
        }
    }
}

格式化

//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();
       }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.net技术第一章 的相关文章

  • 在 C# 应用程序中使用 LinkedIn API

    我正在构建一个小型 Windows 窗体应用程序 并且想要从公司搜索 API 访问信息 我什至不想在个人资料中写入任何内容 我已经打开一个网络浏览器并要求我的用户在我的应用程序中输入一些验证码 这真是令人难以置信的令人沮丧 有大量针对 Py
  • 使对象在运行时不可变 [C#]

    有什么方法 我希望利用反射 可以使实例化对象不可变及其所有公共财产 我有一个来自其他人的代码库 没有可用源 的类 我需要使用它 并且我基本上希望在实例化该类后 如果任何地方的任何代码段尝试调用该类中的公共设置器 则抛出异常 注意 我不想在类
  • WPF Window 类的 IDisposable 成员

    当我将 IDisposable 类成员添加到 Windows 窗体 Form 类时 我将处置代码添加到 Form 的 Dispose 方法中 当我将 IDisposable 类成员添加到 WPF Window 类 不是 IDisposabl
  • C# 'out' 或 'ref' 参数的值何时实际返回给调用者?

    当我向某个人分配任务时out or ref参数 是立即分配给调用者提供的引用的值 或者是out and ref当方法返回时分配给引用的参数值 如果方法抛出异常 是否返回值 例如 int callerOutValue 1 int caller
  • 将 null 投射到某物中?

    今天我和一位同事进行了一次有趣的讨论 我们正在讨论两段 C 代码 代码片段 1 if reader IsDBNull 2 long variable1 reader GetInt64 2 代码片段2 long variable1 reade
  • 无法从 List 转换为 List

    我有这样的设置 abstract class Foo class Bar Foo 以及其他地方的这种形式的方法 void AddEntries List
  • 从另一个命令 Handle() 方法中调用命令

    嗨 我正在使用简易注射器 https simpleinjector orgDI 库并一直在关注一些关于围绕命令模式设计的架构模型的非常有趣的材料 同时 在我的架构的命令方面 https cuttingedge it blogs steven
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 本地用户名不允许使用字符

    目前 如果我尝试将本地用户 jim bob 添加到 Windows 7 系统 如预期的那样 将显示以下错误对话框 其中显示用户名的所有非法字符 是否有一个快速的 net 方法可以调用并返回相同的字符 例如 Path GetInvalidPa
  • MVC 5 中的“缓存配置文件”

    我是 MVC 的初学者 我有一个项目要从 MVC2 转换到最新版本的 MVC 我读了一些关于MVC 4的书 所以我开始了解主要机制 但是 在转换我的 MVC 2 解决方案时 我遇到了一个属性问题 OutputCache 例如 我有多个这样的
  • 如何并行运行一组函数并等待完成结果?

    我需要同时异步运行一组繁重的函数并将结果填充到列表中 这是伪代码 List
  • 为什么Windows 7无法加载程序集PresentationFramework.Aero2?

    我最近完成了我使用 Windows 8 开发的第一个 WPF 应用程序 它在我的机器上运行良好 我的一个朋友也在他的 Windows 8 机器上的 Visual Studio 中运行了它 并且成功了 我在我的机器上使用单击一次安装该程序 它
  • csc.exe 引用外部 .dll 文件

    我正在尝试做一个简单的c 程序使用Growl C API 我尝试用两种不同的方式编译我的程序 我保留了我的 dll文件与我的在同一目录中 cs文件 比我跑的 csc r Growl Connector dll Growl CoreLibra
  • 使用 xsd.exe 工具从具有多个命名空间的 XML 文件生成 XSD 文件

    我想做的事 我正在尝试为现有 XML 文件生成 XSD 文件 我正在使用xsd exe工具 随 Visual Studio 一起提供 XML 文件中的某些元素是命名空间限定的 在某些情况下 本地名称是相同的 如下所示
  • 如何将 Cookie 集合转换为通用列表?容易地

    任何人都知道我如何转换Request Cookies into a List
  • 数组中的不同类型,从数组中取出它们时如何知道将它们转换为什么?

    假设有一个通用的List类型的Packet 持有自定义类扩展Packet 例如登录包 or 聊天包 假设我把这些放在一个列表中 当我把它们拿出来时 最 具体 的类型是Packet 我想将它们转换成更具体的类型 回到原来的类型登录包 or 聊
  • LINQ -Where 表达式返回新实例还是对对象实例的引用

    对于某些人来说 这可能是一个基本问题 但它影响了我设计程序的方式 我有一个 A 类型的集合 IEnumerable a myCollection 我根据两个不同的标准过滤我的收藏 IEnumerable a subCollection1 m
  • 从类外部调用某些异步方法时出现异常

    假设我有一个名为 x 和 y 的类 如下所示 class x public x p private async p await q private async p some logic is there 在 test aspx cs 文件中
  • 以编程方式运行 T4 文本模板

    有没有一种方法可以通过代码以编程方式运行 T4 文本模板 我正在制作一种自定义域特定语言 我希望相关的文本模板在用户每次保存时运行 目前 这就是我在 DSL 模型中所做的事情 protected override void OnDocume
  • 返回 ICollection 而不是 List 的真正优势是什么? [复制]

    这个问题在这里已经有答案了 我读过几篇博客文章 提到对于公共 API 我们应该始终返回 ICollection 或 IEnumerable 而不是 List 返回 ICollection 而不是 List 的真正优势是什么 Thanks 复

随机推荐

  • 51单片机的1T和12T的区别

    1T 模式 不分频 1个系统基本时钟 xff0c 执行一个动作 xff1b 12T模式 12分频 12个系统基本时钟 xff0c 执行一个动作 xff1b 因此 xff0c 12T模式和1T模式执行相同次数的动作 xff0c 12T模式需要
  • python2数据类型

    Python3 数字 Number Python 数字数据类型用于存储数值 数据类型是不允许改变的 这就意味着如果改变数字数据类型得值 xff0c 将重新分配内存空间 以下实例在变量赋值时 Number 对象将被创建 xff1a var1
  • keil中的extern的使用

    C51头文件使用extern的目的是外部变量或函数声明 使用时要注意 1 extern最好写在 h文件中 xff0c 方便后期的可读性 2 在使用extern进行外部变量声明时 xff0c 不能重新给变量赋值 例如 xff1a extern
  • STC89C52RC/RD中定时器2的使用方法

    学过一段时间单片机的你发现 xff0c 中断服务函数可以在主函数进行的同时 xff0c 进行一些对时间要求高的模块的配置时 xff0c 则要用到定时器中断 而如果你要实现多个功能的操作 xff0c 会使用多个定时器是必要的STC89C51单
  • keilC51中调试的方法(主要介绍串口调试XCOM)

    在keilC51中调试的方法的方法有很多 xff1a 1 直接看现象 2 串口调试 3 debug调试 下面终点讲串口调试 xff1a 若要实现printf重定向 重写printf调用的putchar函数 xff0c 重定向到串口输出 需要
  • data/xdata/pdata/code

    dada最大在128byte xff0c 不然就会报错 data xdada最大在512byte xff0c 不然就会报错 xdata pdata stc89c52中未使用 code xff08 将ROM内的定值存在程序存储器中 xff0c
  • 基于PID算法(python)的飞控设计学习日志(一)

    PID算法基础 首先我们需要去了解PID算法的数学原理 xff0c 数学原理部分借鉴于 64 确定有穷自动 机 的博客 一文读懂PID控制算法 xff08 抛弃公式 xff0c 从原理上真正理解PID控制 xff09 总的来说 xff0c
  • JAVA- 浅谈==与equal()的区别

    目录 gt 基础 gt 基本数据类型 gt 引用数据类型 gt Java内存 gt 区别 61 61 和equals gt 61 61 gt equals gt 总结 gt 基础 要想区分这两者 xff0c 我们得先明白什么是基本数据类型和
  • Ubuntu20.04+RealSense D455

    Ubuntu20 04装RealSense D455的驱动 Ubuntu20 04装RealSense D455的驱动 官网链接和个人链接 官网链接和个人链接 前言 xff1a 这些是我ubuntu20 04安装时候所找到的方法 xff0c
  • 【Java开发】 Mybatis-Plus 04:条件构造器-wrapper

    条件构造器算是Mybatis Plus中很重要的知识点了 xff0c 个人觉得它类似于Service的链式查询 xff0c 将诸多条件集中在一个wrapper中 xff0c 以达到高效便捷的目的 本文也是对01 02 03 内容的整合归纳
  • PrusaSlicer2.5中文说明1(新手篇)

    下载PrusaSlicer 稳定版本 PrusaSlicer的最新稳定版本始终可以在DRIVERS amp APPS包中找到 xff0c 它适用于Windows Mac OS X和Linux 该软件包还包括测试对象和打印机驱动程序 xff0
  • ROS机器人开发学习记录2——通过opencv读入本地图像并显示

    使用opencv和ros实现彩色图的读入和显示 为了实现该功能 xff0c 我使用了以下主要函数 xff0c 先对这些函数的功能做简要记录 xff1a xff08 1 xff09 Mat obj 61 imread 本地图像路径 实例 F
  • python中函数的参数分类

    python中函数的参数 形参 xff1a 定义函数时代表函数的形式参数 实参 xff1a 调用函数时传入的实际参数 列如 xff1a def f x y x y形参 print x y f 1 2 1 2 实参 定义函数时 xff0c 形
  • 信号量(sem)控制访问有限共享资源的线程数

    信号量 sem t就是个资源计数器 xff0c 用于控制访问有限共享资源的线程数 span class token macro property span class token directive keyword include span
  • 不需要各种代码的MATLAB语法高亮的设置,简单实用

    文章目录 前言一 代码高亮是什么 xff1f 二 设置步骤1 点击主页再点击预设2 点击MATLAB再点击颜色别着急因为是窗口太小哦所以要放大取消使用系统颜色 xff0c 然后自己选择文本颜色和背景颜色 总结 前言 这次主要想说说MATLA
  • 优先级队列(堆)

    优先级队列 1 什么是优先级队列2 什么时候用它什么时候不用它3 它的具体用法记得import两个库 xff1a 3 1定义3 2输入输出 1 什么是优先级队列 优先级队列就是用库内已有的类 xff0c 这个类名字是队列 xff0c 其实不
  • 2.1 关系模型的基本概念

    文章目录 2 1 1 基本术语定义2 1 用二维表格表示实体集 xff0c 用关键码表示实体间联系的数据模型称为关系模型 xff08 relational Model xff09 在关系模型中 xff0c 关键码 key 简称键 由一个或多
  • 2.2 关系代数的五个基本操作

    文章目录 前言2 2 关系代数2 2 1 关系代数的五个基本操作 1 投影 xff08 Projection xff09 2 选择 xff08 Selection xff09 选择与投影组合 3 xff09 并 xff08 Union xf
  • web的一些介绍

    文章目录 前言一 什么是Web xff1f 二 基本Web服务结构软件编程体系C S xff08 Client Server xff09 软件体系结构B S xff08 Brower Server xff09 软件体系结构C S结构与B S
  • .net技术第一章

    文章目录 NETC C Sharp 的特点C 的应用范围 NET Framework1 2 创建简单的C 程序结构和书写规则类型的声明和使用类型的声明和使用命名空间使用方法命名空间举例 注释Main方法命令行参数Main返回值 控制台输入和