RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-582895

James Bond's questions

Martin Hope
James Bond
Asked: 2024-11-16 11:02:55 +0000 UTC

如何正确地将一系列方法移动到不同的线路?

  • 5

LINQ 中的标准做法是在链中编写方法,一个接一个,每个方法独占一行:

var nodes = Enumerable
        .Range(0, nodesCount)
        .Select(z => new Node(z))
        .ToArray();

除了 LINQ 之外,还使用类似的方法来链接对常规方法的调用,以简化阅读和理解并减少行长度。然而,在我看来,使用它们时,并不是所有事情都像使用 LINQ 那样逻辑和直观。

例如,请告诉我如何将以下链分解为 3-4 行:

return CreateFromCsFiles(OpenFileHelper.OpenCodeFile(File.ReadAllText(pathToCsprojFile)).ToArray());

不管我怎么尝试,结果仍然是粥。提前致谢!

c#
  • 1 个回答
  • 41 Views
Martin Hope
James Bond
Asked: 2024-11-04 17:55:21 +0000 UTC

哪种程序架构最适合 MDI 界面?

  • 5

多文档界面意味着程序将至少有两种表单 - 主表单(容器)和表单,其副本将在主表单内创建。

最初,我计划将我的程序建立在经典 MVC 的基础上,但如果一个控制器同时负责主窗体和子窗体,在我看来,这似乎是一个重大违规,会使控制器变得过于复杂。

但具有 MDI 界面的程序非常常见,并且可能已经有一个经过验证且非常适合它们的架构。请告诉我,具体是哪一个?

PS 目前我认为下面的配置是最成功的: 在此输入图像描述

c#
  • 2 个回答
  • 59 Views
Martin Hope
James Bond
Asked: 2024-11-03 16:07:45 +0000 UTC

如何获取与特定项目/解决方案相关的 .cs 文件的完整列表?

  • 6

我正在编写一个代码分析程序。起初我认为打开文件的正确方法.cs是从文件中获取.sln与给定解决方案相关的项目列表,然后从每个单独的项目 ( .csproj) 中获取其文件列表.cs。

然而,在分析.csproj不同项目的文件时,我发现它们并不总是包含.cs与特定项目相关的文件的完整列表。我根本没有找到专门的解析器.sln。

请告诉我Visual Studio本身如何找到这些文件?

一开始,我打算简单地搜索.cs特定目录中的文件,但后来我想以一种美观且正确的方式做到这一点。但具体应该如何做尚不清楚。

c#
  • 1 个回答
  • 46 Views
Martin Hope
James Bond
Asked: 2024-07-19 22:01:02 +0000 UTC

事件中发送者参数的目的是什么?

  • 6

我最近开始研究 C# 中的事件主题,这是窗口应用程序之前的最后一个主题。在解释事件格式化约定时,老师多次澄清,约定本身和其中的各个解决方案(特别是同一个发送者)同时存在的原因是,在其创建时既没有 LINQ 也没有 lambda在 C# 表达式中,现在在他们的帮助下,可以更有效地解决相同的问题(链接到原始来源)。

由于我正在学习的课程已经很老了(创建了大约10年),所以我有一个问题:LINQ和lambda表达式的出现是否影响了C#中设计事件的规则,以及约定本身仍然存在吗?存在于他们的设计中,或者是否可以充分使用 LINQ 和委托?)提前致谢!

c#
  • 3 个回答
  • 148 Views
Martin Hope
James Bond
Asked: 2024-07-12 07:45:09 +0000 UTC

是否可以通过 LINQ 查询中的索引访问集合元素?

  • 6

我正在培训中讨论 LINQ 主题。任务是通过编写一个 LINQ 查询来对字符串执行几个简单的操作。

接下来是问题。此任务涉及跳过第一行(标题),然后将每行分为三部分,解析其中的两部分(第三部分应保留为一行),然后创建并返回一个对象,其中包含结果值的字段​​被分配。但我不明白如何在无法按索引访问分割字符串的三个部分中的每一个的情况下完成此操作。

请LINQ专家告诉我,此类问题通常是如何解决的,在这种情况下我该如何编写解决方案?

输入字符串示例:

SlideId;SlideType;UnitTitle
0;theory;Первое знакомство с C#
1;quiz;Первое знакомство с C#
2;theory;Первое знакомство с C#
3;exercise;Первое знакомство с C#

方法代码:

public static IDictionary<int, SlideRecord> ParseSlideRecords(IEnumerable<string> lines)
{
    return ...
}
c#
  • 2 个回答
  • 96 Views
Martin Hope
James Bond
Asked: 2024-06-23 03:23:23 +0000 UTC

C# 中如何实现数组中元素的索引?

  • 6

我最近了解了一种称为链表上的队列(堆栈)的集合类型,以及如何使此类集合在 foreach 循环中可枚举。

自然,问题立即出现了——如何实现这样一个集合中元素的索引?无论我如何绞尽脑汁,如果不使用现有的收藏,就无法发明任何东西。

但不知何故,这是在 C# 的主集合本身中实现的(据我所知,主集合是一个数组)。 Chat GPT 和 Gemini 也没有就此事回答任何可以理解的内容。

请赐教,谁知道C#中数组索引是如何实现的?先感谢您!

c#
  • 3 个回答
  • 57 Views
Martin Hope
James Bond
Asked: 2024-03-28 01:45:11 +0000 UTC

如何为每个递归方法调用分配唯一标识符?

  • 5

我试图使用教育示例来全面理解递归。为了使这项任务变得更容易,对我来说准确地知道当前正在运行哪个递归调用非常有用(例如,通过将此信息打印到控制台)。简单的计数器在这里不合适,因为您不仅需要计算有多少个递归调用,而且还需要知道当前正在执行相对于第一个调用的哪个调用。

如果可以为每个调用分配一个唯一的标识符(例如数字),当递归调用方法时以及在后续递归调用完成工作后返回该方法时,该标识符可以显示在控制台上,这将有很大帮助我把整个画面写下来。

请告诉我,这可能吗?

PS 我们不是在谈论尾部递归 - 它很简单并且不会引起任何问题。这种情况要复杂得多 - 递归调用被放置在循环内,并且传递给递归调用方法的参数取决于该循环的迭代。

c#
  • 1 个回答
  • 25 Views
Martin Hope
James Bond
Asked: 2024-02-15 03:20:02 +0000 UTC

如何使用一个对象参数将多个参数传递给一个方法?

  • 5

我听到了这样的论点:“如果一个方法有超过三个参数,那么你应该创建一个“对象”参数,即一个将所有这些参数作为其字段的对象。”

我最近开始学习编程(两个月),知道如何实现这样的技巧将是非常有趣的。请告诉我主题中的人是谁。先感谢您!

c#
  • 2 个回答
  • 88 Views
Martin Hope
James Bond
Asked: 2024-02-14 03:13:56 +0000 UTC

“一个函数必须做一件事且只能做一件事”是什么意思?

  • 6

据我所知,作者本人对标题中的论点进行了如下解释:“如果一个函数仅执行所声明的函数名称下处于同一抽象级别的那些操作,则该函数执行一个操作。 ” 由于我最近才学习编程(2个月),我请有知识的人用一个简单的例子来解释它应该是什么样子:

有一个方法(从 Main 方法调用)需要两行并返回第三行,其中包含在源行中找不到的文本(实际上有点复杂,但为了示例起见,这个解释就足够了) )。在该方法内部,根据特定关键字将源字符串拆分为两个列表,然后确定两个列表的交集并依次从每个列表中删除。接下来,创建两个字典,通过标头对它们进行比较,并将它们的内容添加到 StringBuilder,然后从该方法作为单个字符串返回。

本质上,这个方法只做一件事——查找字符串之间的差异。但在内部它执行几个不同的操作,因此我对如何正确格式化这样的方法以及是否有必要尝试这样做感兴趣。在我看来是这样的:

  1. 方法不应只有一种,而应有多种。第一个是从Main方法中调用的,其他的都是自己调用的;
  2. 所有函数(创建列表、搜索交集、删除交集、创建字典等)都必须设计为单独的(子)方法,从第一个方法开始按特定顺序调用。因此,第一个方法将仅包含单个操作的列表,并且操作本身将在单独的方法中详细描述。

从字面上看,它看起来不错,但第一个方法需要 4 个参数,调用子方法需要将这些参数传递给每个方法。结果既不短也不清晰......解决方案不是创建单独的方法,而是将它们设计为第一个方法的局部函数 - 然后他们可以使用它的参数。或者将使用的参数放在类字段中。

我还听说过通过对象参数传递多个参数,但我不知道如何正确执行此操作。

这是一个例子。我请有知识的人告诉我如何正确地格式化这个或类似的代码,这样我的头就不会在第一次阅读后开始受伤))提前致谢!

主要方法:

        static void Main(string[] args)
    {
        Console.Write("Введите путь к исходному файлу реестра: ");

        string originalRegistry = File.ReadAllText(Console.ReadLine().Replace("\"", ""));

        Console.WriteLine();
        Console.Write("Введите путь к измененному файлу реестра: ");

        string modifiedRegistry = File.ReadAllText(Console.ReadLine().Replace("\"", ""));

        Console.WriteLine();

        string paragraphSeparator = "[HKEY";
        string keyValueSeparator = "\r\n";

        File.WriteAllText("RegistryTweaks.reg", FindDifferencesBetweenFiles(originalRegistry, modifiedRegistry, paragraphSeparator, keyValueSeparator));

        Console.WriteLine("Готово!");

        Console.ReadKey();
    }

解析输入文本文件的方法:

        static string FindDifferencesBetweenFiles(string originalRegistry, string modifiedRegistry, string paragraphSeparator, string keyValueSeparator)
    {
        var originalList = originalRegistry.Split(new string[] { paragraphSeparator }, StringSplitOptions.None).ToList();
        var modifiedList = modifiedRegistry.Split(new string[] { paragraphSeparator }, StringSplitOptions.None).ToList();

        var intersection = originalList.Intersect(modifiedList).ToList();

        intersection.ForEach(item => originalList.RemoveAt(originalList.IndexOf(item)));
        intersection.ForEach(item => modifiedList.RemoveAt(modifiedList.IndexOf(item)));

        var originalDictionary = originalList.ToDictionary(item => paragraphSeparator + item.Substring(0, item.IndexOf(keyValueSeparator)), item => paragraphSeparator + item);
        var modifiedDictionary = modifiedList.ToDictionary(item => paragraphSeparator + item.Substring(0, item.IndexOf(keyValueSeparator)), item => paragraphSeparator + item);

        var builder = new StringBuilder("Windows Registry Editor Version 5.00\r\n\r\n");

        modifiedDictionary.Values.ToList().ForEach(item => builder.Append(item));

        foreach (string originalDictionaryKey in originalDictionary.Keys)
        {
            if (!modifiedDictionary.ContainsKey(originalDictionaryKey))
            {
                builder.Append(originalDictionary[originalDictionaryKey].Insert(1, "-"));
            }
        }

        return builder.ToString();
    }

该程序使用的数据示例:

[HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\System Resources]

[HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\System Resources\Loader Reserved]
".Raw"=hex(8):01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,0b,00,00,00,03,\
    0e,00,00,00,00,00,00,00,02,00,00,00,00,00,03,01,00,00,00,20,10,00,00,00,00,\
  00,00,70,09,00,00,00,00,0064,03,01,00,00,00,00,d0,09,00,00,00,00,00,00,30,00,\
          
[HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\System Resources\Physical Memory]
".Translated"=hex(8):01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,09,00,00,\
  00,03,01,00,00,00,10,00,00,00,00,00,00,00,c0,09,00,00,00,00,00,03,01,00,00,\
  00,00,10,00,00,00,00,00,00,24640,00,00,00,00,00,00,03,01,00,00,00,30,10,00,00,\
        00,50,c8,db,00,00,00,00,00,10,18,00,00,00,00,00,03,01,00,00,00,e0,d7,dc,00,\
  00,00,00,00,20,28,02,00,00,00,00,07,01,00,02,00,00,00,00,01,00,00,00,00,38,\
  1f,03,00,00,00,00

[HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\System Resources\Reserved]
".Translated"=hex(8):01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00,\
  00,03,01,00,00,00,10,00,00,00,00,00,00,00,c0,09,00,00,00,00,00,03,01,00,00,\
  00,30,10,00,00,00,00,00,00,60,09,00,00,00,00,00

如果修改后的注册表文件中缺少该键(以“[HKEY”开头且连字符“\r\n”之前的行),则必须通过添加“-”将该键及其内容添加到最终文件中(“[-HKEY”);

如果密钥及其内容*出现在两个分析的文件中且没有更改,则它会被忽略(它不应该出现在输出文件中);

如果该密钥存在于两个分析的文件中,但内容不同,则该密钥必须与修改后的注册表快照中的内容一起放置在最终文件中。

c#
  • 1 个回答
  • 151 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5