From fdf5e396fbd5d82f29706b4ab3c81130aa5ec321 Mon Sep 17 00:00:00 2001 From: feilong Date: Wed, 15 Dec 2021 00:30:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=AC=AC1=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StandardQuery.json" | 5 + .../StandardQuery.md" | 111 ++++++++++++++++++ .../StandardQuery/Program.cs" | 36 ++++++ .../StandardQuery/StandardQuery.csproj" | 10 ++ .../config.json" | 4 +- 5 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 "data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery.json" create mode 100644 "data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery.md" create mode 100644 "data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery/Program.cs" create mode 100644 "data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery/StandardQuery.csproj" diff --git "a/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery.json" "b/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery.json" new file mode 100644 index 0000000..b1fb887 --- /dev/null +++ "b/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery.json" @@ -0,0 +1,5 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "StandardQuery.md" +} \ No newline at end of file diff --git "a/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery.md" "b/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery.md" new file mode 100644 index 0000000..4fc0538 --- /dev/null +++ "b/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery.md" @@ -0,0 +1,111 @@ +# .NET 规范实现情况的查询 + +.NET Standard 是针对多个 .NET 实现推出的一套正式的 .NET API 规范。 + +请编写一段代码,支持功能:**查询支持某个 .NET Standard 版本的所有.NET 实现的最低版本**。 + +执行运行命令`dotnet new console --output StandardQuery`创建测试项目,添加测试代码如下: + +```csharp +// 下面的C#列表,表示.NET Standard的版本号列表 +var dotnetStandard = new List(){ + "1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "2.0", "2.1" +}; + +// 而下面的C#字典,表示了.NET 每种实现支持上述对应.NET Standard 规范的最低版本: +var dotnetImplements = new Dictionary>(){ + [".NET 和.NET Core"]=new List(){"1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "2.0", "3.0"}, + [".NET Framework"]=new List(){"1", "4.5", "4.5", "4.5.1", "4.6", "4.6.1", "4.6.1^2", "4.6.1", "2", "4.6.1^2", "N/A3"}, + ["Mono"]=new List(){"4.6", "4.6", "4.6", "4.6", "4.6", "4.6", "4.6", "5.4", "6.4"}, + ["Xamarin.iOS"]=new List(){"10.0", "10.0", "10.0", "10.0", "10.0", "10.0", "10.0", "10.14", "12.16"}, + ["Xamarin.Mac"]=new List(){"3.0", "3.0", "3.0", "3.0", "3.0", "3.0", "3.0", "3.8", "5.16"}, + ["Xamarin.Android"]=new List(){"7.0", "7.0", "7.0", "7.0", "7.0", "7.0", "7.0", "8.0", "10.0"}, + ["通用 Windows 平台"]=new List(){"10.0", "10.0", "10.0", "10.0", "10.0", "10.0.16299", "10.0.16299", "10.0.16299", "待定"}, + ["Unity"]=new List(){"2018/1", "2018/1", "2018/1", "2018/1", "2018/1", "2018/1", "2018/1", "2018/1", "2021.2"} +}; + +var dotnetStandardQuery = new Dictionary>(); + +//TODO(You): 请在此实现代码 + +Console.WriteLine("以下各种.NET的实现,支持了 .NET Standard 2.1的最低版本是:"); +Console.WriteLine("===="); +foreach(var lowlowerSupportImplementVersion in dotnetStandardQuery["2.1"]){ + Console.WriteLine("* "+lowlowerSupportImplementVersion); +} +``` + +执行运行命令`dotnet run --project StandardQuery` 后输出: + +```bash +以下各种.NET的实现,支持了 .NET Standard 2.1的最低版本是: +==== +* .NET 和.NET Core,版本:3.0 +* .NET Framework,版本:2 +* Mono,版本:6.4 +* Xamarin.iOS,版本:12.16 +* Xamarin.Mac,版本:5.16 +* Xamarin.Android,版本:10.0 +* 通用 Windows 平台,版本:待定 +* Unity,版本:2021.2 +``` + +以下正确的实现代码是? + +## 答案 + +```csharp +int i=0; +foreach(var standardVersion in dotnetStandard){ + var lowerSupportImplementVersions = new List(); + foreach(var dotnetImplement in dotnetImplements){ + lowerSupportImplementVersions.Add(dotnetImplement.Key+",版本:"+dotnetImplement.Value[i]); + } + dotnetStandardQuery.Add(standardVersion, lowerSupportImplementVersions); + i++; +} +``` + +## 选项 + +### 取值不对 + +```csharp +int i=0; +foreach(var standardVersion in dotnetStandard){ + var lowerSupportImplementVersions = new List(); + foreach(var dotnetImplement in dotnetImplements){ + lowerSupportImplementVersions.Add(dotnetImplement.Key+",版本:"+dotnetImplement); + } + dotnetStandardQuery.Add(standardVersion, lowerSupportImplementVersions); + i++; +} +``` + +### 少了分号 + +```cshapp +int i=0 +foreach(var standardVersion in dotnetStandard){ + var lowerSupportImplementVersions = new List() + foreach(var dotnetImplement in dotnetImplements){ + lowerSupportImplementVersions.Add(dotnetImplement.Key+",版本:"+dotnetImplement.Value[i]) + } + dotnetStandardQuery.Add(standardVersion, lowerSupportImplementVersions) + i++ +} +``` + +### 列表初始化不对 + +```csharp +int i=0; +foreach(var standardVersion in dotnetStandard){ + var lowerSupportImplementVersions = []; + foreach(var dotnetImplement in dotnetImplements){ + lowerSupportImplementVersions.Add(dotnetImplement.Key+",版本:"+dotnetImplement.Value[i]); + } + dotnetStandardQuery.Add(standardVersion, lowerSupportImplementVersions); + i++; +} +``` diff --git "a/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery/Program.cs" "b/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery/Program.cs" new file mode 100644 index 0000000..bc6b04f --- /dev/null +++ "b/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery/Program.cs" @@ -0,0 +1,36 @@ +// See https://aka.ms/new-console-template for more information + + +var dotnetStandard = new List(){ + "1.0", "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "2.0", "2.1" +}; + + +var dotnetImplements = new Dictionary>(){ + [".NET 和.NET Core"]=new List(){"1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "1.0", "2.0", "3.0"}, + [".NET Framework"]=new List(){"1", "4.5", "4.5", "4.5.1", "4.6", "4.6.1", "4.6.1^2", "4.6.1", "2", "4.6.1^2", "N/A3"}, + ["Mono"]=new List(){"4.6", "4.6", "4.6", "4.6", "4.6", "4.6", "4.6", "5.4", "6.4"}, + ["Xamarin.iOS"]=new List(){"10.0", "10.0", "10.0", "10.0", "10.0", "10.0", "10.0", "10.14", "12.16"}, + ["Xamarin.Mac"]=new List(){"3.0", "3.0", "3.0", "3.0", "3.0", "3.0", "3.0", "3.8", "5.16"}, + ["Xamarin.Android"]=new List(){"7.0", "7.0", "7.0", "7.0", "7.0", "7.0", "7.0", "8.0", "10.0"}, + ["通用 Windows 平台"]=new List(){"10.0", "10.0", "10.0", "10.0", "10.0", "10.0.16299", "10.0.16299", "10.0.16299", "待定"}, + ["Unity"]=new List(){"2018/1", "2018/1", "2018/1", "2018/1", "2018/1", "2018/1", "2018/1", "2018/1", "2021.2"} +}; + +var dotnetStandardQuery = new Dictionary>(); +int i=0; +foreach(var standardVersion in dotnetStandard){ + var lowerSupportImplementVersions = new List(); + foreach(var dotnetImplement in dotnetImplements){ + lowerSupportImplementVersions.Add(dotnetImplement.Key+",版本:"+dotnetImplement.Value[i]); + } + dotnetStandardQuery.Add(standardVersion, lowerSupportImplementVersions); + i++; +} + +Console.WriteLine("以下各种.NET的实现,支持了 .NET Standard 2.1的最低版本是:"); +Console.WriteLine("===="); +foreach(var lowlowerSupportImplementVersion in dotnetStandardQuery["2.1"]){ + Console.WriteLine("* "+lowlowerSupportImplementVersion); +} + diff --git "a/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery/StandardQuery.csproj" "b/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery/StandardQuery.csproj" new file mode 100644 index 0000000..40c60dd --- /dev/null +++ "b/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/StandardQuery/StandardQuery.csproj" @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git "a/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/config.json" "b/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/config.json" index a65f31e..4285e17 100644 --- "a/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/config.json" +++ "b/data/1..NET\345\210\235\351\230\266/1.\345\205\245\351\227\250/5..NET Standard\346\246\202\350\277\260/config.json" @@ -2,5 +2,7 @@ "node_id": "csharp-65d2fd88ed1e44a6a646be4f3c302e50", "keywords": [], "children": [], - "export": [] + "export": [ + "StandardQuery.json" + ] } \ No newline at end of file -- GitLab