2 ms·
yes I know what they are. Use them all the time. But since the post is about if I imagine it's about things like if( x < 0 || x > 5 ) throw new ArgumentO
by stinos 13y ago
yes I know what they are. Use them all the time. But since the post is about if I imagine it's about things like
if( x < 0 || x > 5 )
throw new ArgumentOutOfRange();
if( y == nullptr )
thwrow new NullRefException();
which should imo be something like
Contract.AssertInRange( x, 0, 5 );
Contract.AssertNotNull( y );
- adandy 13y agoIt is possible to write your own contract abbreviators with Code Contracts so I would hope such functionality gets added to the new language. The post does mention however that object invariants are not supported so I do wonder how much Code Contracts are actually influencing it.
- taspeotis 13y agoI imagine you could do even better with something like PostSharp or Fody. public void MyFunction([InRange(0, 5)] int x, [NotNull] object y) { // ... } I just checked, and in fact Fody can do something just like this [1]. The only downside I see is contracts like this would be hard to write concisely: if (useFirstObject == true) Contract.AssertNotNull(firstObject); else Contract.AssertNotNull(secondObject); [1] https://github.com/Fody/NullGuard https://github.com/Fody/NullGuard