neo-project / neo-devpack-dotnet

NEO Development Pack
MIT License
79 stars 100 forks source link

demonstrate error type #1085

Closed Jim8y closed 1 month ago

Jim8y commented 1 month ago

@shargon this pr demonstrate the problem of compiling nullable type.

methods

    public static void TestBigInteger(BigInteger? a)
    public static void TestInt(int? a)
    public static void TestUInt(uint? a)
    public static void TestLong(long? a)
    public static void TestULong(ulong? a)
    public static void TestShort(short? a)
    public static void TestUShort(ushort? a)
    public static void TestSByte(sbyte? a)
    public static void TestByte(byte? a)
    public static void TestChar(char? a)
    public static void TestBool(bool? a)
    public static void TestUInt160(UInt160? a)
    public static void TestUInt256(UInt256? a)
    public static void TestUInt160Array(UInt160[] a)
    public static void TestUInt256Array(UInt256[] a)
    public static void TestByteArray(byte[] a)
    public static void TestString(string a)
    public static void TestObject(object a)

compiled:

    public abstract void TestBigInteger(IList<object>? a);
    public abstract void TestBool(IList<object>? a);
    public abstract void TestByte(IList<object>? a);
    public abstract void TestByteArray(byte[]? a);
    public abstract void TestChar(IList<object>? a);
    public abstract void TestInt(IList<object>? a);
    public abstract void TestLong(IList<object>? a);
    public abstract void TestObject(object? a = null);
    public abstract void TestSByte(IList<object>? a);
    public abstract void TestShort(IList<object>? a);
    public abstract void TestString(string? a);
    public abstract void TestUInt(IList<object>? a);
    public abstract void TestUInt160(object? a = null);
    public abstract void TestUInt160Array(IList<object>? a);
    public abstract void TestUInt256(object? a = null);
    public abstract void TestUInt256Array(IList<object>? a);
    public abstract void TestULong(IList<object>? a);
    public abstract void TestUShort(IList<object>? a);
shargon commented 1 month ago

maybe we can adapt https://github.com/neo-project/proposals/pull/160 to add nullable?

cschuchardt88 commented 1 month ago

Just say all types are nullable. nullable in dotnet is just a way for you to be able to make sure you are not reading a null object.