C#将一个变量分配给一个类调用
可以说我有一个名字空间的GPS,我可以在那里调用像GPS.devise.coordinates.getLoc这样的东西,它只会返回我的设计的GPS坐标。C#将一个变量分配给一个类调用
我该如何将所有“GPS.devise.coordinates”详细分配给变量,如“我”?
所以我可以改用Me.getLoc。
在此先感谢
假设getLoc()是静态的,请尝试使用以下:
using Me = GPS.devise.coordinates;
这通常用于缩短命名空间所在班有共同的名字。一个很好的例子是VSTO库,其中大多数命名空间都有一个Application类。
一下班就“我”呢?
如果 '我' 是说一个Person类
public class Person
{
public Person(){}
private GPS _gps = new GPS();
public Coords getLoc
{
get{
return _gps.devise.coordinates.getLoc;
}
}
}
Person Me = new Person;
Coords MyLocation = Me.getLoc;
如果getLoc
是一个属性,你可以简单地这样做:
var me = GPS.devise.coordinates.getLoc;
不过,我怀疑,既然你的要求,getLoc
是一种方法。在这种情况下,您可以将方法组分配给委托。在C#3.0,你可以这样做:
var me =() => GPS.devise.coordinates.getLoc();
这将使你得到这样的坐标:
var coordinates = me();
的me
另一种声明将是这样的:
Func<Coords> me = GPS.devise.coordinates.getLoc;
假设getLoc
的退货类型为Coords
。
这两个me
的声明是相同的事情 - 它只是两种不同的写作方式。
如果你只是想为coordinates
的简写,因为它有你想要调用那将是非常简单的方法不止一种。虽然我无法从你的例子coordinates
是否是一个字段或属性来讲,它不会因为在这两种情况下,不管你只需将对象分配到一个新的变量:
var coords = GPS.devise.coordinates;
随后你就可以调用方法在coords
变量:
var loc = coords.getLoc();
var satTime = coords.getSatTime();
等
这将与C#(甚至1.0)与稍作修改,与其var
你需要显式声明任何版本的变量的类型。 var
是一个C#3.0(Visual Studio 2008)功能。
如果GPS.devise.coordinates有更多方法,该怎么办?我想要的东西是: GPS.devise.coordinates Me; 至于GPS.devise.coordinates,如代理: Me.GetLoc Me.GetSatTime Me.etc 代替 GPS.devise.coordinates.getLoc GPS.devise.coordinates.getSatTime GPS .devise.coordinates.etc – 2009-09-10 13:35:49
PS:getLoc是一种方法 – 2009-09-10 13:37:53
我已编辑答案来解决您的其他问题。希望这可以帮助。 – 2009-09-10 13:54:58
正是我需要的,谢谢。 – 2009-09-12 00:29:35