我正在玩可选参数,看看它们如何与接口配合使用,我遇到了一个奇怪的警告.我的设置是以下代码:
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)
编译器给了我以下警告:
如果我使用以下代码运行它:
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=
正如我所料,我得到了" …
我的问题可能更多地与语义相关而不是实际使用IDisposable
.我正在开发一个单例类,负责管理在执行应用程序期间创建的数据库实例.应用程序关闭时,应删除此数据库.
现在我将删除操作由Cleanup()
应用程序在关闭时调用的单例方法处理.当我正在编写文档Cleanup()
时,我感到震惊的是我正在描述Dispose()
应该使用什么方法来清理资源.我原本没有实现,IDisposable
因为它在我的单身人士中似乎不合适,因为我不想要任何东西来处理单身人士本身.目前还没有,但将来可能是一个Cleanup()
可能被调用的原因,但单身人士应该仍然存在.我想我可以GC.SuppressFinalize(this);
在Dispose方法中包含这个可行的方法.
因此,我的问题是多方面的:
1)IDisposable
在单例上实施从根本上讲是一个坏主意吗?
2)我只是通过Cleanup()
代替a 来混合语义Dispose()
,因为我正在处理资源我真的应该使用一个dispose?
3)实现'Dispose()' GC.SuppressFinalize(this);
将使得我的单例实际上不会被破坏,因为我希望它在调用清理数据库后生存.
我正在尝试做一些似乎应该在scala中具有直接语法/功能的东西.我只是不知道那是什么.我正在尝试将Option的包含值(如果它不是None)转换为另一种类型.
如果我想实现以下功能,我想知道代码是什么
def myFunc(inVal:Option[Double]):Option[BigDecimal] = {
//Code I need goes here
}
Run Code Online (Sandbox Code Playgroud)
注意:我实际上并没有实现这个功能,它只是我演示我需要的最清晰的方式