C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2008/09/28 02:50

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
タグ: .NET C# VB











トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/232-80160230