C#将一个变量分配给一个类调用

问题描述:

可以说我有一个名字空间的GPS,我可以在那里调用像GPS.devise.coordinates.getLoc这样的东西,它只会返回我的设计的GPS坐标。C#将一个变量分配给一个类调用

我该如何将所有“GPS.devise.coordinates”详细分配给变量,如“我”?

所以我可以改用Me.getLoc。

在此先感谢

假设getLoc()是静态的,请尝试使用以下:

using Me = GPS.devise.coordinates; 

这通常用于缩短命名空间所在班有共同的名字。一个很好的例子是VSTO库,其中大多数命名空间都有一个Application类。

+0

正是我需要的,谢谢。 – 2009-09-12 00:29:35

你可以公开一个属性,它返回,就像这样:

public Point getLoc { get { return this.device.coordinates.getLoc;}} 
+0

击败了我:) – Pondidum 2009-09-10 12:24:29

+0

如果getLoc方法每次调用时都会返回一个新值(因为我怀疑它可能),那么这将不是一个特别好的API设计。每次调用属性时都会返回同一个对象。 – 2009-09-10 12:30:28

+1

除标记评论是预期立即返回的财产。调用GetLoc可能会导致长时间运行的方法。 – PVitt 2009-09-10 12:34:53

一下班就“我”呢?

如果 '我' 是说一个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)功能。

+0

如果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

+0

PS:getLoc是一种方法 – 2009-09-10 13:37:53

+0

我已编辑答案来解决您的其他问题。希望这可以帮助。 – 2009-09-10 13:54:58