我是 C# 的新手。我正在编写 window 表格,用于根据扩展名对文件夹内的文件进行排序。 当用一个文件夹完成任务时它是有效的,但我修改它以从列表框中的多个项目完成它。 我要解释我的任务。 首先我在进程启动时单击开始按钮,它将禁用所有按钮,然后循环列表框中的每个项目并对文件夹中的所有文件进行排序。 ...
我是 C# 的新手。我正在编写 window 表格,用于根据扩展名对文件夹内的文件进行排序。 当用一个文件夹完成任务时它是有效的,但我修改它以从列表框中的多个项目完成它。 我要解释我的任务。 首先我在进程启动时单击开始按钮,它将禁用所有按钮,然后循环列表框中的每个项目并对文件夹中的所有文件进行排序。 ...
我正在尝试覆盖System.Text.Json package 中的JsonConverter<T> ,它有一个抽象的 Read 方法,它可以被 ovveridden 为: 公共覆盖 object 读取(参考 Utf8JsonReader 读取器,类型 typeToConvert,Jso ...
因此,如果我有一个结构体 PlayerData,它具有在 System.Numerics 中定义的 Vector3 结构体的成员(不是只读结构体) 我将它们传递给方法: c# 是否会因为 Vector3 成员不是只读结构而是只读字段而创建防御性副本? 现有的库不提供向量的只读版本,所以如果 ...
我想在 ref 结构方法中使用yield : 编译器抱怨错误: CS4013 类型“RefStruct”的实例不能在嵌套的 function、查询表达式、迭代器块或异步方法中使用但是迭代器块中没有使用RefStruct的实例。 我可以假设 ref 结构的yield转换规则没有改变。 与在类中一样 ...
我想尽量减少数学库中结构的复制,并阅读修饰符中的 C# 7.2 in尤其是在将它与可变结构一起使用时的警告。 碰巧我有这个可变结构:public struct Quaternion { public float W; public float X; public float ...
请考虑以下扩展方法: 这些只是切换一个ref boolean变量值。 测试: 我们得到: 问题:选择一种语法或另一种语法有什么隐藏的区别吗? ...
我具有以下扩展方法,用于监视变量并等待其具有给定的期望值: 运行正常: 我想定义一个ref扩展方法,该方法给我一个委托,该委托向我返回ref变量的当前值,例如: 这样,我以前的扩展方法可以扩展RefFunc<T>而不是Func<T>并且可以假设使用 ...
为什么第一次调用Foo下面编译但第二次调用会导致模糊的调用编译器错误? (使用c#7.2) private static void AmbiguousAsyncOverload() { Foo(() => Bar()); // This is OK ...
C#版本:7.2 我的Ms Build版本:未知(如果有人能告诉我如何在我的机器上找到它请做) 我的Visual Studio版本:Visual Studio Professional 2019 我将把它煮到最低限度,所以忽略了代码的简单性。 在Visual Studi ...
我正在为我的代码生成库创建测试自动化。 我在C#7.2中有一个测试项目。 该项目可使用Visual Studio编译,没有任何问题。 我的测试是更新该项目的代码。 然后,我希望测试编译项目,加载程序集,并验证它是否按预期工作。 我尝试了msbuild和csc。 双方都抱怨7.2对 ...
最近我在徘徊是否可以通过引用比较结构。 由于读取结构变量会创建该变量的副本,因此通过引用比较标准结构似乎是不可能的。 但是,使用 C# 7 ref会更有意义。 我定义了 4 个变量 鉴于 MyStruct 是一个标准结构 当我尝试这个时: var comparison1 = Referen ...
我从C#中的System.Buffers.MemoryPool<T>和System.Memory<T> ,希望减少字节数组的分配。 我有一堆字节和字节数组,需要将它们复制到一个字节数组中(用于仅适用于byte[] ,不适用于Span / Memory )。 我正在 ...
我使用的是旧版库中的一种方法: F (ref T t) where T: struct 。 仅出于性能原因将其声明为ref ,并且不会修改接收到的数据。 该库不能更改。 在我的代码中,我有一个新方法G (in T t) where T: struct调用F G (in T t) whe ...
鉴于以下课程: 以及这种用法: 我试图找出为什么GetDouble委托转换被认为是不明确的,以及在这个上下文中它与labmda表达式和强制转换为匿名委托的确切原因。 编辑:看起来这不会影响C#7.3,但会影响7.2及更低版本。 添加本地方法之前的版本可以通过使GetInt ...
我在阅读文档的C#7.2 在这里,我在关于跨此次来到ref readonly : 编译器强制调用者不能修改引用。 尝试直接分配值会生成编译时错误。 但是,编译器无法知道是否有任何成员方法修改了结构体的状态。 为了确保对象不被修改,编译器创建一个副本并使用该副本调用成员引用。 任何修改都针对该防 ...
因此,我(认为我)了解in参数修饰符的作用。 但是这样做似乎是多余的。 通常,我认为使用ref的唯一原因是修改调用变量, in明确禁止该变量。 因此,通过将in参考似乎逻辑上等同于按值传递。 有某种性能优势吗? 我认为,在后端, ref参数必须至少复制变量的物理地址,该地址的大 ...
在C#7.2中,我们看到了方法参数的in修饰符的引入,以传递对象的只读引用。 我正在使用7.2开发一个新的.NET Standard项目,出于好奇,我尝试使用in关键字在struct的相等运算符的参数上进行编译。 ie - public static bool operator == ( ...
我在.NET Core 2.1中遇到了一个我想要了解的性能问题。 可以在此处找到此代码: https://github.com/mike-eee/StructureActivation 以下是BenchmarkDotNet的相关基准代码: 从一开始,我希望Activated ...
这个C#不编译: 编译器的抱怨是: 类型'IdList'已经包含'Item'的定义 如果我注释掉索引器,它会编译。 我该如何编译? 骑士没有固定。 不合时宜的解决方法不是嵌套Item类。 IDE是MacOS上的Rider 2018.1.4,语言级别7 ...