Here's a few code summaries:
1: You can create non-zero based arrays
static
void
Go() {
string
[] thingsThatHappenedInMyLife = (
string
[]) Array.CreateInstance(
typeof
(
string
),
new
[] { 24 },
new
[] { 1990 });
thingsThatHappenedInMyLife.SetValue(
"I was born"
, 1990);
thingsThatHappenedInMyLife.SetValue(
"I dislocated my shoulder"
, 1996);
thingsThatHappenedInMyLife.SetValue(
"I was allowed to buy alcohol (big mistake)"
, 2008);
thingsThatHappenedInMyLife.SetValue(
"I started a programming blog"
, 2013);
for
(
int
i = thingsThatHappenedInMyLife.GetLowerBound(0); i <= thingsThatHappenedInMyLife.GetUpperBound(0); ++i) {
string
lifeEvent = (
string
)thingsThatHappenedInMyLife[i];
if
(lifeEvent ==
null
) lifeEvent =
"not much happened to me"
;
Console.WriteLine(
"In "
+ i +
", "
+ lifeEvent);
}
}
2: You can create unions in C#
[StructLayout(LayoutKind.Explicit)]
public
struct
UnionTest {
[FieldOffset(0)]
public
uint
Value;
[FieldOffset(0)]
public
readonly
byte
AsByte;
}
3: You can define extension methods with generic constraints on the extended type
///
/// Returns the target object if it is not null; or throws a NullReferenceException if it is.
///
/// The target object's type.
/// The extended subject.
/// The message that will be passed to the generated exception. If null, then a default message will be used.
/// The object that NotNull was called on.
public
static
T NotNull(
this
T extended,
string
exceptionMessage =
null
)
where T :
class
{
if
(extended ==
null
)
throw
new
NullReferenceException(exceptionMessage ??
"Supplied "
+
typeof
(T).Name +
" must not be null!"
);
else
return
extended;
}
... and lots more !
Go read the blog !
1 comment:
Hmm. Their blog is gone. I should have backed up the whole thing!
Post a Comment