小编Xen*_*ate的帖子

什么是C++中的句柄?

我被告知句柄是一种指针,但不是,并且它允许您保持对对象的引用,而不是对象本身.什么是更详细的解释?

c++ handle

93
推荐指数
5
解决办法
17万
查看次数

多个等待单个方法

我有这样的方法:

public static async Task SaveAllAsync()
{
    foreach (var kvp in configurationFileMap)
    {
        using (XmlWriter xmlWriter = XmlWriter.Create(kvp.Value, XML_WRITER_SETTINGS))
        {
            FieldInfo[] allPublicFields = 
                           kvp.Key.GetFields(BindingFlags.Public | BindingFlags.Static);
            await xmlWriter.WriteStartDocumentAsync();
            foreach (FieldInfo fi in allPublicFields)
            {
                await xmlWriter.WriteStartElementAsync("some", "text", "here");
            }
            await xmlWriter.WriteEndDocumentAsync();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我正在努力追随当有人打电话时会发生什么SaveAllAsync().

我认为会发生的是:

  1. 当有人第一次调用它时,SaveAllAsync()会将控制权返回给该行的调用者await xmlWriter.WriteStartDocumentAsync();
  2. 然后......当他们等待SaveAllAsync()(或等待任务)时......会发生什么?将SaveAllAsync()仍然是第一的await坚持到它被调用?因为没有涉及线程,我猜是这样的......

c# asynchronous async-await

39
推荐指数
2
解决办法
3万
查看次数

什么是SDK?(C++)

就一般而言,对于一个noobie来说.我显然需要一个'SDK'来安装一些东西; 这是什么?

c++ sdk

32
推荐指数
2
解决办法
2万
查看次数

Thread.VolatileRead()vs Volatile.Read()

在大多数情况下,我们被告知更喜欢Volatile.Read而不是Thread.VolatileRead,因为后者发出了全栅栏,而前者仅发射相关的半栅栏(例如获取栅栏); 哪个更有效率.

但是,根据我的理解,Thread.VolatileRead实际上提供的东西Volatile.Read没有,因为实施Thread.VolatileRead:

public static int VolatileRead(ref int address) {
  int num = address;
  Thread.MemoryBarrier();
  return num;
}
Run Code Online (Sandbox Code Playgroud)

由于实现的第二行有完整的内存障碍,我相信VolatileRead实际上确保address将读取最后写入的值.根据维基百科的说法,"完整的围栏确保围栏之前的所有装载和存储操作都将在围栏之后发布的任何装载和存储之前提交." .

我的理解是否正确?因此,Thread.VolatileRead仍然提供不具备的东西Volatile.Read吗?

.net c# multithreading

29
推荐指数
2
解决办法
5164
查看次数

Winforms双缓冲

我将此添加到我的表单的构造函数代码中:

this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
Run Code Online (Sandbox Code Playgroud)

但是当它加载控件时,无论何时更改(表单及其组件经常更改(需要更新)),它仍会显示丑陋的工件.

我需要做些什么不同的事情?

c# doublebuffered winforms

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

无法访问受保护的成员'object.MemberwiseClone()'

我正在尝试使用我.MemberwiseClone()的自定义类,但它会引发此错误:

Cannot access protected member 'object.MemberwiseClone()' via a qualifier of type 'BLBGameBase_V2.Enemy'; the qualifier must be of type 'BLBGameBase_V2.GameBase' (or derived from it)
Run Code Online (Sandbox Code Playgroud)

这是什么意思?或者更好的是,我如何克隆一个Enemy类?

c# clone

21
推荐指数
2
解决办法
2万
查看次数

使用任意定义的匿名接口方法

请考虑以下代码:

public static void main(String[] args) {
    File file = new File("C:\\someFile.txt") {
        public void doStuff() {
            // Do some stuff
        }   
    };

    file.doStuff(); // "Cannot resolve method"
}
Run Code Online (Sandbox Code Playgroud)

当我们尝试调用新定义的方法时doStuff(),这是不可能的.原因是它file被声明为类型的对象File而不是我们新的匿名子类的实例.

所以,我的问题是,有没有"好的"方法来实现这种行为?除了显而易见的(只是,正确地宣布类).

java

21
推荐指数
2
解决办法
413
查看次数

C#base()构造函数顺序

可能重复:
C#构造函数执行顺序

class Foo
{
    public int abc;
    Foo()
    {
       abc = 3;
    }

}

class Bar : Foo
{
    Bar() : base()
    {
       abc = 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,当创建Bar的对象时,BarObject.abc的值是多少?基础构造函数是第一个调用,还是Bar()运行,/ then/base()构造函数?

c# constructor base

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

当未指定类型参数时,为什么Java泛型原始类会擦除所有泛型对象?

如果我有课:

public class GenericClass<TBlah extends Number> {
    public List<String> getList() {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试从另一个类使用该方法时:

public class OtherClass {
    public void test() {
        GenericClass a = null;
        for (String s : a.getList()) {

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么a.getList()返回a List<Object>直到我将for循环上面的行更改为:

GenericClass<Number> a = null;
Run Code Online (Sandbox Code Playgroud)

那时a.getList()返回一个List<String>它应该做的事情?

编辑:我不明白为什么指定的合同getList()应该受到如何声明我的变量'a'的影响.getList()永远都会回归List<String>,而TBlah是什么并不重要.

java generics type-erasure

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

将方法存储为类的成员变量

我把它作为我的'KeyEvent'类的成员之一:

private delegate void eventmethod();
Run Code Online (Sandbox Code Playgroud)

和构造函数:

public KeyEvent(eventmethod D) 
{
    D();
}
Run Code Online (Sandbox Code Playgroud)

我想要做的不是在那里调用D(),我想将该方法(D)存储为KeyEvent的成员变量,所以类似于:

stored_method = D();
Run Code Online (Sandbox Code Playgroud)

然后在另一个KeyEvent方法中,执行以下操作:

stored_method();
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

c# methods delegates member

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