我有一点有趣的问题,我无法找到解决方案.我有4个不同的代表,并希望使用其中一个作为函数的参数.但我找到的唯一解决方案是:
void doSomething(Delegate delegate){ }
Run Code Online (Sandbox Code Playgroud)
但我不希望能够通过每个代表,只是其中一个:
public delegate void CopyStatusDelegate(long fileSize, long copied);
public delegate void CopyProgressDelegate(int progress);
public delegate void CopyEstimatedDelegate(int copyTimeSeconds, int estimatedTimeSeconds);
public delegate void CopyAllInfoDelegate(long fileSize, long copied, int progress, int copyTimeSeconds, int estimatedTimeSeconds);
Run Code Online (Sandbox Code Playgroud)
在输入委托不是其中之一时,在c#中除了抛出异常之外的任何其他解决方案吗?
写出四个重载doSomething,每个重载都接受其中一个委托.编译器会阻止你传递什么都重要,如果你需要某种原因(这是不是很清楚),你可以从这些重载转发到一个protected或private接受任何委托方法.