메서드가 null을 반환하지 않는다는 것을 어떻게 나타 냅니까? 현재 이것은 내 코드입니다.메소드가 코드 계약을 사용하여 null을 반환하지 않는다는 것을 어떻게 나타 냅니까?
Line 19는 CreateFunction이 결과가 아무 것도 아니라고 가정하더라도 확인되지 않은 메시지를 가져옵니다.
1 <Pure()> Public Function CreateFunction(Of TArg1, TArg2, TResult)(ByVal body As Func(Of Expression, Expression, BinaryExpression)) As Func(Of TArg1, TArg2, TResult)
2 Contract.RequiresAlways(body IsNot Nothing)
3 Contract.Assume(Contract.Result(Of Func(Of TArg1, TArg2, TResult))() IsNot Nothing)
4
5 Dim arg1 = Expression.Parameter(GetType(Integer), "arg1")
6 Dim arg2 = Expression.Parameter(GetType(Integer), "arg2")
7
8
9 Dim temp = Expression.Lambda(body(arg1, arg2), arg1, arg2)
10 Contract.Assume(temp IsNot Nothing)
11 Return DirectCast(temp.Compile, Global.System.Func(Of TArg1, TArg2, TResult))
12 End Function
13
14 <Pure()> Public Function Add() As Func(Of T, T, T)
15 Contract.Ensures(Contract.Result(Of Func(Of T, T, T))() IsNot Nothing)
16
17 Dim temp = CreateFunction(Of T, T, T)(AddressOf Expression.AddChecked)
18 Return temp
19 End Function
동일한 구문을 사용했는데 정확하다고 생각합니다. OP가 너무 답답하지 않습니다. – mafu
그것은 VB입니다. 그래서 Contract.Ensures (Contract.Result (Of TArg1, TArg2, TResult) 중) (IsNot Nothing)' –