小编pm1*_*100的帖子

linq oneliner用于从IDictionary中删除其键不在另一字典中的元素

我有

IDictionary<string,object> d1;
Dictionary<string, object> d2;
Run Code Online (Sandbox Code Playgroud)

我需要从 d1 中删除 d2 中没有的所有条目。

我知道我可以用 for 循环等来做到这一点,但那是上个世纪的事了;我想把事情做好。

我必须

   d1.Where(x => {return d2.ContainsKey(x.key);});
Run Code Online (Sandbox Code Playgroud)

但不知道下一步该做什么

c# linq dictionary .net-4.0

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

我可以在地图上定义一个函数[string] interface {}

我试过了

 func (m map[string]interface{}) Foo() {
     ...
    }
Run Code Online (Sandbox Code Playgroud)

 func (m *map[string]interface{}) Foo() {
     ...
    }
Run Code Online (Sandbox Code Playgroud)

但是去测试错误

invalid receiver type map[string]interface {} (map[string]interface {} is an unnamed type)
Run Code Online (Sandbox Code Playgroud)

所以我必须添加更多的文字以保持这里的快乐

go

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

c#提取所有文件但不提取以"Empty"结尾的文件

要获取CustsExport其名称中包含的所有文件,请执行以下操作:

foreach (string file in Directory.EnumerateFiles(xmlFolder, "*CustsExport*.xml"))
Run Code Online (Sandbox Code Playgroud)

但有一种情况我不想提取其名称Empty以此结尾的文件:

Erb3PCustsExport-303_20080319_063109_000_Empty
Run Code Online (Sandbox Code Playgroud)

请问你能帮帮我吗?

非常感谢

.net c#

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

将char*更改为指向偏移的几位

说我有这个代码:

char  num[2] = {15, 240};
char* p_num;
Run Code Online (Sandbox Code Playgroud)

现在,如果我已经理解了一切正确,那么数组中的位应该像这样对齐:

00001111 11110000
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否有任何可能的方法使指针p_num指向第一个字节中的最后四位,以便在执行此代码时:

printf("%d", *p_num);
Run Code Online (Sandbox Code Playgroud)

会写255吗?

即p_num将指向下面括号所包含的位:

0000[1111 1111]0000
Run Code Online (Sandbox Code Playgroud)

c arrays byte pointers bit

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

为什么BinaryFormatter可以序列化一个Action <>但是Json.net不能

尝试序列化/反序列化Action <>.

尝试#1天真的我

JsonConvert.SerializeObject(myAction);
...
JsonConvert.Deserialize<Action>(json);
Run Code Online (Sandbox Code Playgroud)

反序列化失败,表示无法序列化Action.

试试#2

JsonConvert.DeserializeObject<Action>(ctx.SerializedJob, new JsonSerializerSettings {ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor });
Run Code Online (Sandbox Code Playgroud)

相同(ish)失败.

尝试#3然后我找到了http://mikehadlow.blogspot.com/2011/04/serializing-continuations.html

这使用BinaryFormatter.我放弃了这个(base64将二进制编码为字符串).第一次工作得很好.

试试#4

然后我找到了

https://github.com/DevrexLabs/Modules.JsonNetFormatter

这是json.net的IFormatter模块.连线,同样的失败 - 无法反序列化.

那么BinaryFormatter怎么做呢,但Json.net不能呢?

编辑:

一般的答复是 - "这是最愚蠢的事情".让我展示一下我想做的事情

MyJobSystem.AddJob(ctx=>
{
   // code to do
   // ......
}, DateTime.UtcNow + TimeSpan.FromDays(2));
Run Code Online (Sandbox Code Playgroud)

即 - 在2天内执行此lambda.

这对我来说很好.使用BinaryFormatter.我很好奇为什么一个序列化基础设施可以做到这一点,但另一个不能.他们似乎对可以和不可以处理的内容有相同的规则

c# json.net

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

如何让 from_str_radix 识别负十六进制数

这段代码

fn main() {
   let hex="ffffffff";
   let num = i32::from_str_radix(hex,16).unwrap();
   println!("{}", num);
}
Run Code Online (Sandbox Code Playgroud)

未能说明结果数字太大,无法容纳 i32

反之

println!("{:08x}", -1i32);
Run Code Online (Sandbox Code Playgroud)

但是会产生“ffffffff”

我是否缺少一些简单的东西,或者我是否必须陷入一些诡计

rust

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

是标志枚举的字符串表示中定义的值的顺序

[flags]
enum Test
{
  a=0,
  b=1,
  c=2
}
...
var v = Test.c | Test.b;
var str = v.ToString();
// str = 'b, c'
Run Code Online (Sandbox Code Playgroud)

是'str'中定义的值的顺序.b,c和c,b在语义上都是相同的,在语法上是不同的.为什么我关心 - 我正在编写测试代码(不在c#中)更喜欢不需要花哨的逻辑解析所有可能的组合

c# enums

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

是一个大小为 N 的 C++ 数组,一个不同的类型

我以为

int a1[5];
Run Code Online (Sandbox Code Playgroud)

int a2[6];
Run Code Online (Sandbox Code Playgroud)

是不同的类型。

void foo(int a[5]){};
void foo(int a[6]){};
Run Code Online (Sandbox Code Playgroud)

不会编译,说它们是 foo 的重复定义(即foo(int *a)

我对此感到非常惊讶。我看到 C++ 标准中不允许 VLA 的原因之一是它们破坏了类型系统。

我也惊讶地发现 c 也在做同样的事情。

void foo(int a[4]){
   printf("sz=%ld", sizeof(a));
}
Run Code Online (Sandbox Code Playgroud)

报告指针大小。我期望它报告4*sizeof(int)(并且只接受类型变量int[4]作为调用参数)

c c++ language-lawyer

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

为什么使用宏时给变量添加括号更安全?#define For(i,n) for(int i = 0; i &lt; (n); i++)

我喜欢使用宏来让我的代码更快,尤其是执行从 0 到 n 的 for 循环。我这样做了:

 #define For(i,n) for(int i = 0; i < n; i++)
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,但我看到其他人这样做:

 #define For(i,n) for(int i = 0; i < (n); i++)
Run Code Online (Sandbox Code Playgroud)

唯一的不同是他们添加了一个括号。我不知道他们为什么要添加 (),我得到编码器的答复,它说目的是使其更安全。但我没有得到他进一步的解释,我在网上也找不到相关的东西。

我只是尝试做嵌套循环,如果不添加 () 就可以了。

当我长时间使用宏时,我正在添加 () ,但它没有显示任何不同。

我很好奇“更安全的程序”的确切含义,并且我想了解更多有关使用宏的风险(例如难以调试?)。

c++ macros for-loop

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

标签 统计

c# ×4

c ×2

c++ ×2

.net ×1

.net-4.0 ×1

arrays ×1

bit ×1

byte ×1

dictionary ×1

enums ×1

for-loop ×1

go ×1

json.net ×1

language-lawyer ×1

linq ×1

macros ×1

pointers ×1

rust ×1