小编Cra*_*nec的帖子

通过显式实现具有可选参数的接口的警告

我正在玩可选参数,看看它们如何与接口配合使用,我遇到了一个奇怪的警告.我的设置是以下代码:

 public interface ITestInterface
 {
     void TestOptional(int a = 5, int b = 10, object c = null);
 }

 public class TestClass : ITestInterface
 {

     void ITestInterface.TestOptional(int a = 5, int b = 5, object c = null)
     {
        Console.Write("a=" + a + " b=" + b + " c=" + c);
     }
 }
Run Code Online (Sandbox Code Playgroud)

编译器给了我以下警告:

  • 为参数'a'指定的默认值将不起作用,因为它适用于在不允许可选参数的上下文中使用的成员
  • 为参数"b"指定的默认值将不起作用,因为它适用于在不允许可选参数的上下文中使用的成员
  • 为参数"c"指定的默认值将不起作用,因为它适用于在不允许可选参数的上下文中使用的成员

如果我使用以下代码运行它:

class Program
{
    static void Main(string[] args)
    {
        ITestInterface test = new TestClass();
        test.TestOptional();
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

a=5 b=10 c=正如我所料,我得到了" …

c# optional-parameters compiler-warnings c#-4.0

30
推荐指数
2
解决办法
5856
查看次数

在Singleton上使用Dispose来清理资源

我的问题可能更多地与语义相关而不是实际使用IDisposable.我正在开发一个单例类,负责管理在执行应用程序期间创建的数据库实例.应用程序关闭时,应删除此数据库.

现在我将删除操作由Cleanup()应用程序在关闭时调用的单例方法处理.当我正在编写文档Cleanup()时,我感到震惊的是我正在描述Dispose()应该使用什么方法来清理资源.我原本没有实现,IDisposable因为它在我的单身人士中似乎不合适,因为我不想要任何东西来处理单身人士本身.目前还没有,但将来可能是一个Cleanup()可能被调用的原因,但单身人士应该仍然存在.我想我可以GC.SuppressFinalize(this);在Dispose方法中包含这个可行的方法.

因此,我的问题是多方面的:

1)IDisposable在单例上实施从根本上讲是一个坏主意吗?

2)我只是通过Cleanup()代替a 来混合语义Dispose(),因为我正在处理资源我真的应该使用一个dispose?

3)实现'Dispose()' GC.SuppressFinalize(this);将使得我的单例实际上不会被破坏,因为我希望它在调用清理数据库后生存.

c# singleton dispose

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

将Option中的值转换为另一种类型

我正在尝试做一些似乎应该在scala中具有直接语法/功能的东西.我只是不知道那是什么.我正在尝试将Option的包含值(如果它不是None)转换为另一种类型.

如果我想实现以下功能,我想知道代码是什么

def myFunc(inVal:Option[Double]):Option[BigDecimal] = {
    //Code I need goes here
}
Run Code Online (Sandbox Code Playgroud)

注意:我实际上并没有实现这个功能,它只是我演示我需要的最清晰的方式

scala scala-option

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