可以說我有一個名字空間的GPS,我可以在那裏調用像GPS.devise.coordinates.getLoc這樣的東西,它只會返回我的設計的GPS座標。C#將一個變量分配給一個類調用
我該如何將所有「GPS.devise.coordinates」詳細分配給變量,如「我」?
所以我可以改用Me.getLoc。
在此先感謝
可以說我有一個名字空間的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