Во-первых, в C# нет такой операции, как "связывание переменной с указателем".
object x = i; // Это называется "боксинг" или же "упаковка". _ЗНАЧЕНИЕ_ переменной i копируется в кучу и возвращается ссылка на это значение (object)
То что ты хочешь сделать, сделать невозможно, тк тип переменной всегда должен быть известен на этапе компиляции, чтобы можно было выделить место на стеке.
Но! Можно приблизиться к этому через женерики и рефлексию. Дорого, неудобно, и не ясно, зачем нужно.
Если ты подскажешь, что ты планируешь дальше делать с j - тогда будет более полезный код.
using System;
static class App {
public static void Main() {
var i = 999;
var t = i.GetType();
var x = (object) i;
var doSomethingMethod = typeof(Helper).GetMethod(nameof(Helper.DoSomething));
var doSomethingIntMethod = doSomethingMethod!.MakeGenericMethod(typeof(int));
doSomethingIntMethod.Invoke(null, new[]{x});
}
}
public static class Helper {
public static void DoSomething<T>(object x) {
var j = (T) x;
// далее работаем
Console.WriteLine($"{typeof(T)} {j}"); // System.Int32 999
}
}
Если это как-то связано с предыдущим вопросом, то советую остановиться и очень хорошо подумать.