Dav*_*itt 9 c# exception new-operator
我在Koders上找到了这段代码:
private ServiceProvider SiteServiceProvider
{
get
{
if (serviceProvider == null)
{
serviceProvider = new ServiceProvider(site as VSOLE.IServiceProvider);
Debug.Assert(serviceProvider != null, "Unable to get ServiceProvider from site object.");
}
return serviceProvider;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道,有什么可能Debug.Assert(serviceProvider != null触发的方式吗?我的印象是new只能被异常中止,在这种情况下永远不会达到断言.
如果是工厂方法,我会期望"测试为空"模式更多 - 即
SomeType provider = SomeFactory.CreateProvider();
if(provider == null) // damn!! no factory implementation loaded...
{ etc }
Run Code Online (Sandbox Code Playgroud)
还有一个值得了解的案例,但这里不适用(因为我们知道我们正在创建的类型)... Nullable<T>; 这主要是泛型问题:
static void Test<T>() where T : new()
{
T x = new T();
if (x == null) Console.WriteLine("wtf?");
}
static void Main()
{
Test<int?>();
}
Run Code Online (Sandbox Code Playgroud)
这更是涵盖在这里.
| 归档时间: |
|
| 查看次数: |
1426 次 |
| 最近记录: |