2016-09-01 114 views
-2

我有一个简单的类是这样的:如何从一个类的多变量实例中获取一个变量?

public class r_event 
{ 
    string name; 
    double time; 

    public r_event() 
    { 
     name = "none"; 
     time = 0; 
    } 

    public r_event(string name, double time) 
    { 
     this.name = name; 
     this.time = time; 
    } 
} 

,我已经在另一个班级做一个实例如下:

r_event event1 = new r_event("SH_S", 2); 

,但我想分配只是这两个变量(事件之一,时间)我的第二类的局部变量;

事实上,我想在第二个类中声明(例如)一个名为“name”的字符串,并将r_event类实例的“name”属性分配给名称。 这样的事情:

 string name = event1.name; 

但这是不可能的。我怎样才能做这份工作?

+2

设置添加getter方法。 – OldProgrammer

+3

请看看[C#属性](https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx) –

回答

0

您可以通过简单地添加关键字public使您已经公开的字段。例如

public string name; 
public double time; 

这将允许您在课堂外访问它们。 事实上,创建(公共)属性比使用公共字段更好。您可以通过增加实现这个下面......

public string Name 
{ 
    get { return name: } 
    set { name = value; } 
} 

public double Time 
{ 
    get { return time; } 
    set { time = value; } 
} 

希望这有助于(我可能会建议你考虑性能和可访问性/访问修饰符)。

+0

我添加了“公共”关键字,但是当我构建一个实例如: r_event e =新的r_event(); 然后分配给如下字符串: string name = e.Name; 系统显示此错误:字段初始值设定程序无法引用非静态字段方法....在赋值!? –

+0

尝试实现属性而不是使用公共字段。 –

+0

我刚刚运行了你的代码,并且使用了公共访问修饰符它可以工作吗?我注意到你说你做了'string name = e.Name;',除非你把字段的名字从'name'改成'Name'(注意大写'n'),那么这确实会给你一个错误。 –

0

尝试public string name;,您的变量不能通过其保护级别访问。

1

刚跑出你的代码,请没有在关于它们的可访问未指定变量是private by default这个作品我只是测试它,如果你声明变量的访问为public请阅读C# MSDN Access Modifiers

public class r_event 
{ 
    public string name; 
    public double time; 

    public r_event() 
    { 
     name = "none"; 
     time = 0; 
    } 

    public r_event(string name, double time) 
    { 
     this.name = name; 
     this.time = time; 
    } 
} 

调用同样的方式

r_event event1 = new r_event("SH_S", 2); 

如果您熟悉Auto-Property's你可以做同样的这种方式

public class r_event 
{ 
    public string name { get; set; } 
    public double time { get; set; } 

    public r_event() 
    { 
     name = "none"; 
     time = 0; 
    } 

    public r_event(string name, double time) 
    { 
     this.name = name; 
     this.time = time; 
    } 
} 
相关问题