小编Ste*_*ris的帖子

编译器是否将LINQ连接到哪里查询?

考虑以下两个类似的代码示例.

一个where条款.

bool validFactory
  = fields
    .Where(
      fields => field.FieldType == typeof( DependencyPropertyFactory<T> ) &&
                field.IsStatic )
    .Any();
Run Code Online (Sandbox Code Playgroud)

两个where条款.

bool validFactory
  = fields
    .Where( field => field.FieldType == typeof( DependencyPropertyFactory<T> ) )
    .Where( field => field.IsStatic )
    .Any();
Run Code Online (Sandbox Code Playgroud)

我更喜欢第二种,因为我发现它更具可读性,并且它导致更少的格式化问题,尤其是在使用自动格式化时.在单独条件(或甚至上方)旁边放置注释以澄清意图时也更清楚.

我的直觉说第二个代码样本的效率会降低.我当然可以自己写一个简单的测试(并且如果没人知道答案的话).现在我认为这是SO的完美食物.,p

  1. 一个比另一个更有效吗?
  2. 编译器是否足够智能来优化它?

.net c# linq compilation

5
推荐指数
1
解决办法
719
查看次数

Expression.Convert不会为不变值类型参数抛出InvalidOperationException?

Expression.Convert通常在"expression.Type和type之间定义了无转换运算符"InvalidOperationException时抛出.

返回类型参数Func<>是参考类型的协变.

// This works.
Func<SomeType> a = () => new SomeType();
Func<object> b = a;
Run Code Online (Sandbox Code Playgroud)

对于值类型不是协变的.

差异仅适用于参考类型; 如果为变量类型参数指定值类型,则该类型参数对于生成的构造类型是不变的.

// This doesn't work!
Func<int> five = () => 5;
Func<object> fiveCovariant = five;
Run Code Online (Sandbox Code Playgroud)

但是,Expression.Convert相信它是可能的.

Func<int> answer = () => 42;
Expression answerExpression = Expression.Constant( answer );
// No InvalidOperationException is thrown at this line.
Expression converted 
    = Expression.Convert( answerExpression, typeof( Func<object> ) );
Run Code Online (Sandbox Code Playgroud)

InvalidOperationException呼叫时不会抛出Expression.Convert.表达式树正确编译,但是当我调用创建的委托时,我得到了预期的结果InvalidCastException. …

c# covariance contravariance expression-trees

5
推荐指数
1
解决办法
962
查看次数

Eclipse插件包卡在Starting状态

我使用Eclipse创建了一个新的插件项目,Activator为我创建了一个默认项目.调试时(如Eclipse的应用程序运行),我注意到了start(),并stop()没有叫这个激活的方法.

关于在Eclipse中看不到您的软件包时该怎么做的指南之后,我偶然发现了以下结果.

  • 使用该ss命令,我可以看到我的捆绑列表.
  • 我的包的状态是' 开始 '

捆绑包正在启动过程中.当bundle 处于活动STARTING 状态时,bundle处于该状态start.BundleActivator.start(BundleContext)调用bundle时,bundle必须处于这种状态.如果BundleActivator.start方法无异常完成,则bundle已成功启动并且必须移至该ACTIVE状态.

放置在start方法第一行的断点不会被击中.也没有System.out.println出现在控制台中.什么可能导致start方法没有被调用,因此状态陷入困境STARTING

java osgi eclipse-plugin

5
推荐指数
1
解决办法
1993
查看次数

是否针对数组或List <T>优化了LINQ .Last,.Skip等方法?

我想知道LINQ方法是否喜欢.Last.Skip针对数组进行优化List<T>等等.例如,对于一个数组,我可以做到_array[_array.Length - 1]最后一个元素.是否_array.Last()实际上是通过所有的元素一一列举,然后返回最后还是有其实内置了一些优化?

如果没有,可能不得不放弃表现.

linq arrays optimization

4
推荐指数
1
解决办法
406
查看次数

c#将String转换为双精度损失

我有以下内容:

string value = "9223372036854775807";
double parsedVal = double.Parse(value, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

...结果是9.2233720368547758E+18不完全相同的数字.如何在不损失精度的情况下将字符串转换为double?

c#

4
推荐指数
1
解决办法
2515
查看次数

如何防止在更新接口后更新所有实现类?

我们有一个WPF应用程序,主要是一个图表应用程序.大约有30个图表.每个图表在数据库中都有自己的表,该表保存图表的配置信息.每个图表在应用程序中都有一个类,其中包含与图表相关的配置信息.

我们的app(IChartConfiguration)中有一个接口,每个图表配置类都实现了这个接口.它允许应用程序以一致和类似的方式使用任何特定的图表配置.

我们遇到的"问题"是每次我们需要向接口添加属性时,对于添加了我们尚未处理的新配置属性的新图表,我们必须返回到每个图表配置类,还没有实现这个新属性(通常是大多数)并添加它.满足接口实现.这不是一个巨大的负担,但在我看来,必须有一个更好的方法来解决这个问题.

有没有更好的方法来处理这个?

c# interface

4
推荐指数
1
解决办法
131
查看次数

什么是颤振控制台?

当我按照Flutter for Windows上"入门"文档时,无处不在,提到了"Flutter Console":

您现在可以在Flutter控制台中运行Flutter命令了!

后来文档要求你......

在Flutter控制台中,运行以下命令以查看是否需要安装任何依赖项才能完成设置:

$ flutter doctor

什么是这个神奇的'颤动控制台'

早些时候,他们描述Flutter取决于PowerShell 5.0; PowerShell是Flutter控制台吗?

该文档列出了一个可选步骤,用于将flutter'bin'文件夹添加到PATH环境变量"[i]如果您希望在常规Windows命令提示符下运行Flutter命令".这对我来说似乎不是可选的,因为flutter doctor在PowerShell中无法识别运行(暂时我将假设是Flutter控制台).我跑了flutter.bat,但是这个窗口在一段时间后关闭了.也许这应该是Flutter控制台?

我在设置中遗漏了什么吗?

flutter

4
推荐指数
1
解决办法
2995
查看次数

如何从注册表中获取重定向字符串?

我正在使用Registry从注册表读取一些值。我需要访问的某些值使用注册表字符串重定向

这种包含值的一个示例是:

@%SystemRoot%\system32\shell32.dll,-21791
Run Code Online (Sandbox Code Playgroud)

如何访问此本地化字符串?

c# registry localization

3
推荐指数
1
解决办法
396
查看次数

如何获取开放资源管理器窗口的PIDL?

我知道如何使用Microsoft Internet Controls COM库获取所有打开的资源管理器窗口.从这里,我能够找到LocationURL那些窗户.但是,这仅针对文件系统上的路径设置.似乎何时显示虚拟对象(如网络打印机或回收站)LocationURL为空.LocationName仍然似乎设置为开始栏上可见的名称.

LocationURL设置何时,这足以让我知道资源管理器窗口指向的位置,但是如何找到这些特殊文件夹指向的内容?

读取指向项目标识符列表(PIDL)的指针.知道在资源管理器窗口中显示哪个PIDL可以识别出这一点.有没有办法检索这个?

c# com winapi windows-explorer

3
推荐指数
1
解决办法
1294
查看次数

是否有推荐的方法来构造多个 JSON 模式?

我刚刚写了我的第一个 JSON 模式,太棒了!不过,我现在正在研究如何构建多个 JSON 模式,包括在开发期间以及稍后如何托管它们。对此的指导似乎非常有限。

当然,我查阅了有关如何构建复杂方案的官方 json-schema.org 文档,甚至得到了一些有用的东西。我现在有三个模式,在开发过程中组织在文件夹结构中,如下所示:

json-schemas
  - /common
    - /common-schemas.json
  - /data
    - /data-schemas.json
    - /DataStreamServiceRequest
      - /DataStreamServiceRequest-schema.json
Run Code Online (Sandbox Code Playgroud)

在这三个中,仅DataStreamServiceRequest-schema.json包含一个架构(它是对应用程序服务端点的所有可能请求的架构)。它指的是使用相对引用定义的data-schemas.json类型common-schemas.json。这里的目的是data在一个文件中提供单个子系统(例如,)的所有类型。

我为所有三个.json文件分配了一个$id包含绝对 URI 的文件,对应于它们所在的目录。

例如,这里是common-schemas.json

{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "$id": "https://carp.cachet.dk/schemas/common",
  "NamespacedId": {
    "type": "string",
    "pattern": "^([a-z_0-9]+\\.?)+[a-z_0-9]$"
  }
}
Run Code Online (Sandbox Code Playgroud)

并且,从,我在使用中data-schemas.json提到:NamespacedIdcommon-schemas.json

"dataType": { "$ref": "common#/NamespacedId" }
Run Code Online (Sandbox Code Playgroud)

我很高兴这有效,但是,这是推荐的吗?我是否忽略了构建我的架构的一些基本内容,如下所示?是否有任何特别的理由更喜欢“每种类型一个模式”?是否有一个我忽略的惯用结构,例如,相当于 Java 的文件位置对应于命名空间?

如果不存在(我认为在 Java 中存在),那也将构成一个答案。

也许还有其他相关上下文:我正在使用networknt/json-schema-validator,并且出于开发/测试目的,没有太多绝对 URI 非常方便。初始化验证器时,我 …

json jsonschema

3
推荐指数
1
解决办法
2128
查看次数