C# 在类中指定整数的引用

C# 在类中指定整数的引用,c#,pass-by-reference,unsafe-pointers,C#,Pass By Reference,Unsafe Pointers,是否可以在类初始化时传递一个整数作为引用并保护引用 class Foo { private int _refVal; public Foo(ref int val) { _refval = val; // saves the value, not the reference } } 我可以使用指针,但我需要一个不安全的上下文。这是不可能的 相反,您可以使用具有可写属性的类,如下所示: class Reference<T> { publ

是否可以在类初始化时传递一个整数作为引用并保护引用

class Foo {
    private int _refVal;
    public Foo(ref int val) {
        _refval = val; // saves the value, not the reference
    }
}
我可以使用指针,但我需要一个不安全的上下文。

这是不可能的

相反,您可以使用具有可写属性的类,如下所示:

class Reference<T> {
    public T Value { get; set; }
    public Reference(T value) { Value = value; }
}

我想应该将它包装在自定义类中。

出于兴趣,为什么需要这样做?一个等于5的整数等于另一个等于5的整数:如果要在它们之间进行某种区分,则不应使用整型值类型,而应使用类

这不是对你问题的直接回答,但正如他们所说,改进算法比实现或改进有缺陷的算法要好;如果您能给我们提供更多的背景,我们可以帮助您解决更一般的问题/任务,作为一个整体


希望有帮助

为什么需要保存对整数的引用?若需要指向非托管资源的指针,您可以始终使用不需要不安全上下文的托管ItPtR类型。我尝试将C++ LIB移植到微框架中。他们使用指针来链接PID控制器的输入和输出,尝试将C++ LIB移植到微引擎中。它们使用指针“链接”PID控制器的输入和输出。所以他们不需要在我看到的每个loopAh中传递变量;所以你想替换一个int*。如果您只想在不改变算法的情况下浏览代码,那么最好总结一下,请参阅SLak的答案。但是,最好不要像这样传递信息,并重构代码。我想不出一个最好的或甚至是必要的方法来传递一个指针,就像在一个现代的OO语言中,像C一样,考虑使用“OUT”参数,或者提供一个属性设置器的接口。请随意发布更多的代码,我会尽我所能提供一个好的替代方案。好的,它应该是一个Ardunio PID库的端口,可以在上找到。看看构造器。好吧,使用参数:myPID&输入、输出和设定点,2,5,1;变为:myPIDout输入、输出、输出设定点、2、5、1;然后,在myPID中,必须分配它们:而不是*Input=x;您只需执行Input=x;。这就像myPID方法有多个返回值一样,在微框架中不能使用泛型。但是装箱/拆箱是有效的。