繁体   English   中英

C#将变量分配给类调用

[英]C# Assign a Variable to a Class call

可以说我有一个命名空间GPS,在这里我可以调用GPS.devise.coordinates.getLoc之类的东西,它只会返回我设计的GPS坐标。

如何将所有冗长的“ GPS.devise.coordinates”分配给诸如“ Me”之类的变量?

所以我可以改用Me.getLoc。

提前致谢

您可以公开一个返回它的属性,如下所示:

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

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

using Me = GPS.devise.coordinates;

通常用于缩短类具有通用名称的名称空间。 VSTO库是一个很好的示例,其中大多数名称空间都有一个Application类。

“我”是哪一类的?

如果说“我”是人类

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;

假设的返回类型getLocCoords

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)功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM