小编Bau*_*uss的帖子

Windows注册表问题

我正在尝试使用D修改注册表中的某些值,但它一直给我以下错误:

无法设置值

但是,如果我在C#中编写完全相同的代码,那么它的工作原理.它是D中的注册表模块的问题还是我使用它的方式的问题?

d

module main;

import std.windows.registry;
import std.stdio;

import core.thread;

void main() {
    string languageName = "English";
    string languageCode = "en_uk";
    const uint languageValue = 0x00000001;
    writefln("Name '%s' Code '%s' Value '%s'", languageName, languageCode, languageValue);
    writeln("Press ENTER to change language.");
    readln();
    writefln("Changing language of Sims 2 to '%s' ...", languageName);
    Thread.sleep(dur!("msecs")(2000));
    string keyName;
    try {
        enum versions = [
            "",
            "Apartment Life",
            "Bon Voyage",
            "Celebration Stuff",
            "Family Fun Stuff",
            "Free Time",
            "Fun with Pets Collection",
            "Glamour Life Stuff", …
Run Code Online (Sandbox Code Playgroud)

windows registry d

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

将对象转换为方法泛型类型

这会生成一个错误,指出我无法将类型转换ClassTypeT.这有什么解决方法吗?

有没有办法指定实际上可以转换为this can的类型T

public void WorkWith<T>(Action<T> method)
{
    method.Invoke((T)this);
}
Run Code Online (Sandbox Code Playgroud)

c# generics

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

null条件运算符不适用于泛型方法中的Func <T>

这是一个编译器错误还是有一个特定的选择原因,为什么空条件运算符不适Func用于泛型方法?

举个例子,下面的代码不能编译

public static T Test<T>(Func<T> func)
{
    return func?.Invoke() ?? default(T);
}
Run Code Online (Sandbox Code Playgroud)

编译器产生的错误是 CS0023 Operator '?' cannot be applied to operand of type 'T'

我知道你可以做到这一点但是:

public static T Test<T>(Func<T> func)
{
    return func != null ? func() : default(T);
}
Run Code Online (Sandbox Code Playgroud)

那为什么不允许这样呢?

Action<T>然而,进一步详细说明可以按预期工作.

public static void Test<T>(Action<T> action, T arg)
{
    action?.Invoke(arg);
}
Run Code Online (Sandbox Code Playgroud)

更新(2017-01-17):

经过一些更多的研究,即使有以下几点,它也没有多大意义:

假设我们有一个类(参考类型)

public class Foo
{
    public int Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

让我们说我们有一个 Func<int>

Func<int> fun = () => 10;
Run Code Online (Sandbox Code Playgroud)

以下作品: …

c# null-coalescing null-conditional-operator

5
推荐指数
2
解决办法
936
查看次数