c#类引用而不是实例引用
我可以在本地引用C#中的类,而不是类的实例吗? 以下代码不会编译,但作为示例,例如:
void someFunc() { var a = System.Math; var b = a.Abs(4); }
编辑:在真正的程序中,它不是System.Math类,我想构造类并返回构造的值。 我最初并不认为我想要使用该类的上下文是相关的,而且可能不应该。
Anastasiosyal有一个有趣的想法,使用当地的代表来做。
您不能为变量分配静态类的值。 问题是你为什么要这样做,你可能还有其他方法可以解决你的问题
例如,您可以使用委托来分配您要执行的操作:
Func operation = Math.Abs; // then you could use it like so: int processedValue = operation(-1);
你可以引用一个类:
Type math = typeof(System.Math);
但是你不能使用常规点语法在其上调用静态方法:
// Wont compile: math.Abs(5);
如果您只想缩短(和IMHO混淆)您的代码,您可以通过using指令引用带别名的类 :
// Untested, but should work namespace MyUnreadableCode { using m = System.Math; class Foo { public static Int32 Absolut(Int32 a) { return m.Abs(a); } } }
在c#中,它们被称为类型。 你可以分配它们像:
Type a = typeof(SomeClass);
但是,您必须实例化它才能使用它。 我相信你想要的是像java一样的静态导入,但不幸的是,它们在c#中不存在。
简短的回答:不像你上面的那样。
在C#6.0中,他们引入了静态导入function ,可以解决问题。
using static System.Math; class MyProgram { static void Main(string[] args) { var b = Abs(4); // No need to specify the name of Math class } }
据我所知,你需要引用短名称的class级? 试试这个(在文件的顶部,在using语句部分):
using m = System.Math;
稍后在你的代码中:
m.Abs(...)
说得通?
不可以。将Type
视为实例方法绑定到原始类型上的静态方法的值是不可能的。 为此,您需要构造一个新类型,将其方法调用转发给原始类型。
上述就是C#学习教程:c#类引用而不是实例引用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
class MyMath { public int Abs(int i) { return Math.Abs(i); } } var x = new MyMath();
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/992706.html