小编gun*_*sus的帖子

C# 中 System.String[*] 和 System.String[] 的区别

编辑:我知道 C# 相当于For Each server As String In serversis foreach(var item in servers),但由于GetOPCServers返回对象,因此应该将其转换为可迭代类型。

\n
\n

我正在使用 COM 库开发一个应用程序。由于64位会出现问题,所以我的目标CPU是x86。

\n

所有方法都按预期工作,除了GetOPCServers().

\n

尽管使用相同 dll 的 Visual Basic 代码不会导致问题,但 C# 会抛出System.InvalidCastException以下错误:

\n
\n

System.Core.dll 中发生了类型为“System.InvalidCastException”的第一次机会异常

\n

附加信息:
\n\'System.String[*]\' t\xc3\xbcr\xc3\xbcndeki nesne \'System.String[]\' t\xc3\xbcr\xc3\xbcne at\xc4\xb1lamad\xc4 \xb1.

\n
\n

由于我的操作系统是土耳其语,因此对错误消息表示歉意。

\n
\n

type 中的对象System.String[*]不能赋值System.String[]

\n
\n

System.String[*]和 和有什么区别System.String[]

\n

使用相同dll的VB代码运行没有异常

\n
Public Class OpcInfo\n  Dim servers As …
Run Code Online (Sandbox Code Playgroud)

c# vb.net com

6
推荐指数
1
解决办法
1768
查看次数

为什么C#Null条件运算符不返回Nullable <T>?

我只是好奇"为什么空传播运算符(或可以)不提供有关类型的任何信息,例如在类型中返回null Nullable<int>?"

由于它返回的null没有类型,因此结果值无法通过扩展方法.

class User {
     public string Name { get; set; }
     public User Father { get; set; }
}

var user = new User ( );


public static class Extensions {
    public static string X (this string p) => "EXTENSION METHOD";
}
Run Code Online (Sandbox Code Playgroud)

C#交互式窗口:

> var user = new User();
> user.Father
null
> user.Father.Name
Object reference not set to an instance of an object.
> user.Father?.Name
null
> user.Father?.Name.X()
null
Run Code Online (Sandbox Code Playgroud)

编辑:

  • 正如@ScottChamberlain所说,这Nullable<string>是一个不可编译的代码.但我不是在修理它.因为这个例子已经回答了这个问题,所以任何机构都可以很容易地解决我所要求的问题.

c#

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

1 %% 0.1 = 0.1和1 %% 0.2 = 0.2?

我错过了基础包中的东西或错误吗?

在Win 7-32上运行R-2.15.2

x %% y模数(x mod y)5 %% 2是1

来自:http://www.statmethods.net/management/operators.html


>  1 %% 0.1
[1] 0.1

>  1 %% 0.2
[1] 0.2
Run Code Online (Sandbox Code Playgroud)

它们都必须为0.

以下示例按预期工作.例如:

1 %% 0.15

必须是0.1(1.0 = 6 x 0.15 + 0.1)


>  1 %% 0.11  # expected result 
[1] 0.01

>  1 %% 0.15
[1] 0.1

>  1 %% 0.3
[1] 0.1

>  1 %% 0.4
[1] 0.2

> 1 %% 0.5
[1] 0
Run Code Online (Sandbox Code Playgroud)

floating-point r floating-accuracy

2
推荐指数
1
解决办法
171
查看次数

使用MongoDatabase类而不是MongoDatabaseImpl

我需要通过Mongo C#Driver设置分析级别.

Client.GetDatabase("test")返回在运行时IMongoDatabase解析的接口MongoDB.Driver.MongoDatabaseImpl.

根据MongoDB .NET Driver API Documentation MongoDatase类有一个SetProfilingLevel我无法在运行时强制转换的方法.

BTW我还安装了旧版驱动程序版本2.0.1,因为文档中SetProfilingLevel方法就在其中.

c# mongodb mongodb-.net-driver

2
推荐指数
1
解决办法
743
查看次数

优雅的方法从iterable中的每个元素中删除单个键

是否可以使用lambdas操作每个字典?

需要说明的是,只想删除_id每个元素的键.

奇迹如果有一种优雅的方式来实现这个简单的任务,没有第三方,如(toolz),函数或复制字典对象.


我不寻找的可能解决方案.

  1. 传统方式:

    cleansed = {k:v for k,v in data.items() if k not in ['_id'] }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 其他方式:

    def clean(iterable):
        for d in iterable:
            del d['_id']
        return
    
    Run Code Online (Sandbox Code Playgroud)
  3. 第三方方式:

Python函数方法:使用filter从dict中删除键

python functional-programming

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

如何获得Google App Engine任务队列失败的通知

我正在使用GAE推送任务队列.我希望任务运行一次,如果失败,我希望它以某种方式通知我.我也不希望它进行任何重试.如果它失败了,我希望它在队列中,直到我手动重新运行它.

我可以手动捕获所有异常并向自己发送电子邮件,但它失败了.有没有更好的办法?在队列配置中,我可以指定零重试限制(见下文),但如果我这样做,任务一旦失败就会被删除.

# queue.yaml
- name: default
  rate: 5/s
  retry_parameters:
    task_retry_limit: 0
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

python google-app-engine task-queue

0
推荐指数
1
解决办法
987
查看次数