C#图解教程第5版(1)

出版时间:2019-11,丹尼尔·索利斯(Daniel,Solis)卡尔·施罗坦博尔()卡尔·施罗坦博尔(Cal,Schrotenboer) 著,窦衍森,姚琪琳 等 译

编程环境

win10 LTSC安装 visual studio

查看win10版本: winver

win10 1809 不支持 visual studio 2022安装 4.8.1 ,参考: https://learn.microsoft.com/zh-cn/troubleshoot/developer/visualstudio/general/visual-studio-2022-unsupported-operating-systems

开发环境

  • Roslyn 是微软公司开源的 .NET 编译器, 安装 visual studio 的.net 桌面开发环境后,可以搜索 csc.exe (C#的编译器)加入path,这样就可以使用命令行编译c# 源代码,如 C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\Roslyn

  • 可以使用 visual studio code,安装 C# Dev Kit

第 1 章 C#和.NET 框架

20 世纪90 年代末的Windows编程:

  • Win32 API 不是面向对象的
  • MFC是面向对象的,但一致性差
  • COM(组件对象模型)概念简单,但编写复杂

新平台目标:

<p>C#图解教程第5版(1)</p>

In 2002, Microsoft released the first version of the .NET Framework: 经过20+年的持续更新优化,该技术体系是可信赖的。

.NET Framework 的构成:

<p>C#图解教程第5版(1)</p>

CLR:

  • Memory management and garbage collection
  • Code safety verification
  • Code execution, thread management, and exception handling

GC自动从内存中删除程序不再访问的对象:检查内存泄漏非常困难和耗时。

The programming tools:

  • The Visual Studio integrated development environment (IDE)

  • .NET-compliant compilers (e.g., C#, Visual Basic .NET, F#, IronRuby, and managed C++)

  • Debuggers

  • Web development server-side technologies, such as ASP.NET and WCF
    GC自动垃圾收集:面相开发的效率提升,面向执行的安全提升。
    JIT编译器:不被本机调用的代码不会被编译,被调用的代码会被编译一次(第一次启动有点慢)。

第2章 C#和.NET Core

  • .NET Core是高度模块化的,可以通过NuGet包自动升级。
  • .NET Core已经支持windows下的WPF

第3章 C# 编程概述

  • C#是OOP语言,程序、类型声明、命名空间都是对象
  • 程序由一个或多个类型声明构成(如类)
  • 类型声明由命名空间组织
  • 每个C# 程序必须有一个Main方法作为程序的入口
  • @ 可以作为标识符的第一个字母

创建SimpleProgram.cs

using System; // 使用其中的 class console.WriteLine() 函数
namespace simple
{// 声明新的空间,其内部都是该空间的成员
    class Program
    {
        static void Main()
        {// Main为特殊函数,是程序的起点
            Console.WriteLine("Hello world!世界,你好!");
        }
    }

}
  • 编译命令: csc SimpleProgram.cs
  • Console.WriteLine 的格式化字符串前有$, 其中的变量才会被替换,否则被视为字符串字面量
  • Console.WriteLine自动加换行, Console.Write不自动加换行
  • 标记可以引用替换值位置以外的位置,不会发生编译错误,但会产生运行时错误
using System; 
namespace simple
{    class Program
    {
        static void Main()
        {
            int var1=3,var2=6;
            Console.WriteLine("两个整数为:{var1},{var2}");
            Console.WriteLine($"两个整数为:{var1},{var2}");
        }
    }
}
/*
两个整数为:{var1},{var2}
两个整数为:3,6
*/

格式说明符语法

<p>C#图解教程第5版(1)</p>

  • 宽度和对齐格式说明放在前面

  • C,c 货币,具体货币符号和所在区域有关,保留2位小数

  • D,d 十进制整数,位数不够左侧补0

  • F,f, 定点表示法(f 是fixed 不是float)十进制小数,精度为小数位数

  • G,g,紧凑的定点表示或科学记数法表示,具体取决于值。如果未列出任何说明符,则这是默认值。精度说明符:取决于值。
    Sample: Console.WriteLine("{0 :G4}", 12.3456789);
    Output: 12.35

  • X,x,十六进制,区分大小写,一串十六进制数字。十六进制数字 A 到 F 将匹配说明符。精度说明符:要在输出字符串中使用的最小位数。如果数字的数字较少,则左侧将填充 0。
    Sample: Console.WriteLine("{0 :x}", 180026);
    Output: 2bf3a

  • N,n,数,类似于定点表示F,f,但在每组三位数字之间有逗号或句点分隔符,从小数点开始向左移动。
    使用逗号还是句点取决于 PC 的区域性设置
    精度说明符:小数位数。
    示例:Console.WriteLine(“{0 :N2}”, 12345678.54321);
    输出:12,345,678.54

  • P,p, 百分比,表示百分比的字符串。该数字乘以 100。精度说明符:小数位数。
    示例:Console.WriteLine("{0:P2}", 0.1221897);
    输出: 12.22 %

  • E,e,科学计数法,区分大小写,带有尾数和指数的科学记数法。指数前面由字母 E,E 字符将与说明符的大小写相同。
    精度说明符:小数位数。
    示例:Console.WriteLine("{0:e4}",12.3456789);
    输出:1.2346e+001

using System;
namespace simple
{
    class Program
    {
        static void Main()
        {
            double cash = 12345.678;
            Console.WriteLine("货币格式测试:{0,-20:C}", cash);
            Console.WriteLine($"货币格式测试:{cash,20:c}");
            Console.WriteLine($"货币格式测试:{cash:c,20}");
            Console.WriteLine();

            int i = 12345678;
            Console.WriteLine("十进制整数格式测试:{0,-20:D20}", i);
            Console.WriteLine($"十进制整数格式测试:{i,20:d20}");
            Console.WriteLine();

            double d = 53242452111.123456;
            Console.WriteLine("十进制小数格式测试:{0,-20:F4}", d);
            Console.WriteLine($"十进制小数格式测试:{d,20:f4}");
            Console.WriteLine();

            Console.WriteLine("{0 :N2}", 12345678.54321);
            Console.WriteLine();
            Console.WriteLine("{0:e4}", 12.3456789);
        }
    }
}
/*
货币格式测试:¥12,345.68
货币格式测试:          ¥12,345.68
货币格式测试:c212346

十进制整数格式测试:00000000000012345678
十进制整数格式测试:00000000000012345678

十进制小数格式测试:53242452111.1235
十进制小数格式测试:    53242452111.1235

12,345,678.54

1.2346e+001
*/

正文完
 
评论(没有评论)