- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
public static void Test(__arglist)
{
}
public static void Text2(ref string str)
{
var reftype = __reftype(new TypedReference());
var refvalue = __refvalue(new TypedReference(), string) = "string";
var makeref = __makeref(str);
}
И лучше сначала погуглить, а только потом смеяться.
Ну, к примеру, на что ссылается пустой TypedReference, который запиливают в строках 7-8 и какого типа это нечто? Почему в него можно засунуть строку и не упасть?
Спойлер:
var reftype = __reftype(new TypedReference());
при трансформации в IL превращается в
var typeFromHandle = __reftype(default(TypedReference));
Очевидно, что default(TypedReference) == null, а, соответственно, и typeFromHandle == null