剪裁,选取了什么
dependency manager for .NET Core 3.1 runtime
软件仓库:.NET Core 3.1 runtime 的软件仓库
语法:最新的 SDK 所支持的写法 (类似 C11)
cmd:最新的 SDK 所支持的命令
包管理器:包的使用 packages 的使用,package 的载入
编辑器:支持多文件
包的探索:System.Drawing, System.
包的探索:App-Model API (package's API)
默认配置 约定大于配置 (在 package 方面,应该是 开发者只需要关心 package 的名字和版本 用就完事了。runtime 不会轻易变的,py3.4 写的程序 也不会去用到 py2.7 的 pip2 软件仓库)
包的探索:
https://segmentfault.com/a/1190000022246536 # 所谓xx库 调库 调API 不过是完成事情的一种方式,自己写 or 调用别人写好的,没啥区别 (容器类 什么的,不也是别人写的一个 package 么 as 内置数据结构 标准库 https://dbader.org/blog/python-linked-list#As of Python 3.6 (CPython), doesn’t provide a dedicated linked list data type. There’s nothing like [Java’s `LinkedList`](https://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html) built into Python or into the Python standard library. )
包 用错了的后果 (用错了包包,达不到程序想要的效果了;用错了 程序无法启动了;用错了包包,O(1)的事情 变成 O(n) 了;用错了包包,变成 non-generic 了)
包的探索:
C# 对操作系统服务的内置接口,使其成为编写可移植的维护操作系统的管理工具和部件(有时也称shell工具)的理想工具
包的探索:
完成计算机任务
包的探索:
就像用 ror 一样,ruby 不用学的,直接上
剪裁,没有选取什么
dependency manager for .NET Core 2.0 runtime
dependency manager for .NET Standard 2.0
历史遗留问题
老旧的 SDK 所支持的写法 (类似 C99)
从 C11 到 C99 的适配
处理如何让新版本写的 pacakge 能在老版本 runtime 里运行的问题 ( C11 的包 无法在 C99 跑,那么 想用它 怎么办?要么升级到 C11 ,要么 改掉一些运用了C11特性的函数 使之能在 C99 跑 https://segmentfault.com/a/1190000022254307 )
.NET Standard 作为一个标签
标准库的问题,标准库的概念 Go语言标准库
BCL 和 FCL 的使用
实用工具 API
.NET Standard class libraries 这一套从 .NET 技术宣传角度讲的 类库 https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
这一套从 .NET API 宣传角度讲的 类库 (实用工具 API、应用模型 API)
https://docs.microsoft.com/zh-cn/dotnet/standard/framework-libraries
package 的高级应用
https://docs.microsoft.com/zh-cn/dotnet/core/packages#packages
剪裁,没有选取什么
.NET 概述 (以 .NET 为描述中心的描述和 marketing, branding )
.NET 组件 体系结构组件 (Microsoft 积极开发和维护的主要 .NET 实现有 4 个:.NET Core、.NET Framework、Mono 和 UWP)
.NET 类库
.NET 实用工具
.NET 推荐的操作系统 (Windows Server)
.NET Standard
.NET 目标框架 框架集 (没它也可以)
.NET 术语表
.NET 生态 (.NET 生态太乱,历史悠久)
剪裁,选取了什么
不要被限制思维
思维不要被限制
不要被 branding 限制思维,`解决麻烦`是很重要的 提供答案 提供模板
安装 .NET Core 3.1 LTS SDK and runtime
(and dependency manager for .NET Core 3.1)
查看区
> dotnet --version
> dotnet --list-sdks
> dotnet --list-runtimes
/usr/local/share/dotnet (322MB)
~/.nuget/packages
配置区
1
本机 macOS 10.13.6 High Sierra
LTS .NET Core SDK:
.NET Core SDK 3.1.200
.NET Core Runtime 3.1.2
2
下载 LTS
https://dotnet.microsoft.com/download/dotnet-core
3
测试1
https://pastebin.com/pPGfPmaP
测试2
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/language-specification/introduction
测试3
https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/cli-create-console-app
https://docs.microsoft.com/en-us/dotnet/core/get-started
> mkdir Proj1
> cd Proj1 (作为 项目名和 namespace)
> dotnet new globaljson --sdk-version 3.1.200
> dotnet new console
> (dotnet build)
> dotnet run
>> dotnet bin/Debug/netcoreapp3.1/Proj1.dll
> dotnet publish -f netcoreapp3.1
>> dotnet bin/Debug/netcoreapp3.1/publish/Proj1.dll
> dotnet clean
测试4
https://docs.microsoft.com/zh-cn/dotnet/core/deploying/deploy-with-cli#sample-app
https://www.nuget.org/packages/Figgle
> mkdir TestApp1
> cd TestApp1 (作为 项目名和 namespace)
> dotnet new globaljson --sdk-version 3.1.200
> dotnet new console
> dotnet add package Figgle
。。。
> (dotnet build)
> dotnet run
>> dotnet bin/Debug/netcoreapp3.1/TestApp1.dll
> dotnet publish -f netcoreapp3.1
>> dotnet bin/Debug/netcoreapp3.1/publish/TestApp1.dll
> dotnet clean
测试5
https://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/razor-pages-start?view=aspnetcore-3.1&tabs=visual-studio-code
> mkdir RazorPagesMovie
> cd RazorPagesMovie (作为 项目名和 namespace)
> dotnet new globaljson --sdk-version 3.1.200
> dotnet new webapp
( > dotnet dev-certs https --trust )
> dotnet add package Figgle
> (dotnet build)
> dotnet run
localhost:5000
。。。
> dotnet run
学习区1
显式 SDK ,global.json
https://markheath.net/post/switching-between-netcore-sdk-versions
https://docs.microsoft.com/en-us/dotnet/core/tools/global-json
学习区2
确定安装哪个 SDK 版本,最新的
.NETCoreApp 3.1 No dependencies needed.
https://www.nuget.org/packages/System.Text.Json
学习区3
LTS
https://dotnet.microsoft.com/download/dotnet-core
学习区4
操作系统支持
https://docs.microsoft.com/en-us/dotnet/core/install/
学习区5
卸载办法
卸载脚本
https://docs.microsoft.com/en-us/dotnet/core/additional-tools/uninstall-tool
安装位置 ( echo $DOTNET_ROOT )
/usr/local/share/dotnet
其他位置 `NuGetFallbackFolder` `~/.nuget`
/usr/local/share/dotnet/sdk
/usr/local/share/dotnet/shared
/usr/local/share/dotnet/host
https://docs.microsoft.com/en-us/dotnet/core/versions/remove-runtime-sdk-versions?tabs=macos#remove-the-nuget-fallback-folder
参考
https://docs.microsoft.com/zh-cn/dotnet/core/versions/remove-runtime-sdk-versions?tabs=macos
学习区6
手动安装办法
https://docs.microsoft.com/en-us/dotnet/core/install/
https://docs.microsoft.com/en-us/dotnet/core/install/sdk
学习区7
dependency manager (package manager) for .NET Core 3.1
.NET Core is a platform made of NuGet packages.
The following is a list of the key NuGet packages for .NET Core.
https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-add-package
学习区8
多文件
https://docs.microsoft.com/en-us/dotnet/core/tutorials/cli-create-console-app
包:容器类
non-generic:
数组 ArrayList
字典 Hashtable
generic:
数组 List
数组 LinkedList
字典 Dictionary
元组 HashSet
参考
Generics (C# Programming Guide)
================================
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/
参考
System.Collections.Generic
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic?view=netstandard-2.0
.NET 集合和数据结构 - 选择集合
===========================
https://docs.microsoft.com/zh-cn/dotnet/standard/collections # 有两种主要的集合类型:泛型集合和非泛型集合
集合类型是数据集合(如哈希表、队列、堆栈、包、字典和列表)的常见变体。
集合基于 ICollection 接口、 IList 接口、IDictionary 接口或它们对应的泛型集合。 IList 接口和 IDictionary 接口都派生自 ICollection 接口:因此,所有集合都直接或间接基于 ICollection 接口。 在基于 IList 接口(比如 Array、ArrayList 或 List
包,List
ICollection 是 集合类的更基础的接口,IList 接口和 IDictionary 接口都派生自 ICollection 接口:
因此,所有集合都直接或间接基于 ICollection 接口
对比 List 和 LinkedList :
List 实现了 IList
语言级别上的 array 也实现了 IList //
int[] intArray = new int[] {2, 3, 4};
LinkedList 没实现 IList ,仅仅实现了 ICollection
常用的集合类型
=============
https://docs.microsoft.com/zh-cn/dotnet/standard/collections/commonly-used-collection-types
常用 - Array 类
========
https://docs.microsoft.com/zh-cn/dotnet/api/system.array
转化问题
IList aPerList = new List(aPersonDataArr);
PersonData[] array = aPerList.ToArray();
https://stackoverflow.com/questions/12948306/how-to-convert-an-array-of-objects-to-list
开销问题 https://stackoverflow.com/questions/202813/adding-values-to-a-c-sharp-array
常用 - List 类
===========
https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.list-1?view=netstandard-2.0
不常用 - IList 接口
https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.ilist
不常用 - LinkedList 类
https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.linkedlist-1?view=netstandard-2.0
包,Microsoft.AspNetCore.Mvc
https://gunnarpeipman.com/aspnet-core-linux-command-line
包,OSharp
https://github.com/dotnetcore/OSharp#03
包,string
https://www.zhihu.com/question/54877128
https://www.c-sharpcorner.com/UploadFile/mahesh/insert-item-into-a-C-Sharp-list/
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated
https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/exploration/interpolated-strings
https://docs.microsoft.com/en-us/dotnet/csharp/
简便写法,静态类型但尝试忽略类型,动态语言化,去掉不必要的 带来干扰的东西 脑力负担,走几个项目就知道了
处理出活儿 更快 非创新;可熟练出活儿的 (学习手册)
https://www.v2ex.com/t/658977#r_8776718
可熟练出活儿并给人展示的(成果):字符串、下载、数据库操作、倒数据 (Web API 输出)、倒页面 (前后端分离、页面驱动设计)
对不同的人 展示不同的技能
https://segmentfault.com/a/1190000022253028
面向未来的技能
https://segmentfault.com/a/1190000022253028
给他们一种错觉:一个人就是一条生产线的感觉,熟练使用生产资料,给他们一种‘赚了’的感觉,其实是 模板 攒模板之后 而已。人穷莫入众,言轻莫劝人
复制这样的人的知识体系,包括对 C# 的包管理系统 的看法、攒过的模板,人家做过的东西 都给做一遍
https://segmentfault.com/a/1190000022254307
书目参考
MS官方之前
https://www.ctolib.com/docs-csharp-c-index.html
https://www.php.cn/csharp/csharp-tutorial.html
MS官方之后
C# 文档
=======
https://docs.microsoft.com/zh-cn/dotnet/csharp/