static class Program
{
static void Main()
{
Hoge h = null;
h.Safely().Fuga();
}
}
public class Hoge
{
static public readonly Hoge Null = new NullHoge();
public virtual void Fuga()
{
}
private class NullHoge : Hoge
{
}
}
static public class HogeExtension
{
static public Hoge Safely(this Hoge source)
{
return (source != null) ? source : Hoge.Null;
}
}
Imports System.Runtime.CompilerServices
Module Module1
Sub Main()
Dim h As Hoge = Nothing
h.Safely()
h.Fuga()
End Sub
End Module
Public Class Hoge
Public Shared ReadOnly Null As Hoge = New NullHoge()
Public Sub Fuga()
End Sub
Private Class NullHoge
Inherits Hoge
End Class
End Class
Public Module HogeExtension
<Extension()> _
Public Sub Safely(ByRef source As Hoge)
If (source Is Nothing) Then
source = Hoge.Null
End If
End Sub
End Module
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/232-80160230