我有一类称为Pin
。
public class Pin
{
private string title;
public Pin() { }
public setTitle(string title) {
this.title = title;
}
public String getTitle()
{
return title;
}
}
从另一个类我在加销对象List<Pin>
针从另一个我想遍历列表销和获得的元素。 所以我有这样的代码。
foreach (Pin obj in ClassListPin.pins)
{
string t = obj.getTitle;
}
有了这个代码,我不能检索的称号。 为什么?
(注: ClassListPin
仅仅是一个静态类,其中包含一些元件和这些中的一个,是List<Pin>
引脚)
你需要一个方法调用后添加括号,否则编译器会以为你在谈论的方法本身(委托类型),而你实际上是在谈论该方法的返回值。
string t = obj.getTitle();
额外的非基本信息
另外,看看属性。 这样,你可以使用标题,如果它是一个变量,而在内部,它像一个功能。 这样,你就不必写功能getTitle()
和setTitle(string value)
,但你可以做这样的:
public string Title // Note: public fields, methods and properties use PascalCasing
{
get // This replaces your getTitle method
{
return _title; // Where _title is a field somewhere
}
set // And this replaces your setTitle method
{
_title = value; // value behaves like a method parameter
}
}
或者你可以使用自动实现的属性,这会在默认情况下使用:
public string Title { get; set; }
而你就不必建立自己的后备字段( _title
),编译器会创建它自己。
此外,您还可以更改属性访问器(getter和setter)的访问级别:
public string Title { get; private set; }
您可以使用性能,如果他们领域,即:
this.Title = "Example";
string local = this.Title;
getTitle
是一个函数,所以你需要把()
之后。
string t = obj.getTitle();
作为@Antonijn说,你需要执行的getTitle方法,通过添加括号:
string t = obj.getTitle();
但我想补充一点,你正在做的Java编程在C#。 有的概念的属性 (对获取和设置方法),这应该在这样的情况下使用:
public class Pin
{
private string _title;
// you don't need to define empty constructor
// public Pin() { }
public string Title
{
get { return _title; }
set { _title = value; }
}
}
而且甚至更多,在这种情况下,你可以要求编译器不仅为get和set方法的产生,同时也为后面储存一代,通过自动impelemented财产的使用:
public class Pin
{
public string Title { get; set; }
}
现在你不需要执行方法,因为性质一样使用领域:
foreach (Pin obj in ClassListPin.pins)
{
string t = obj.Title;
}
如前所述,你需要使用obj.getTile()
但是,在这种情况下,我认为你正在寻找使用属性 。
public class Pin
{
private string title;
public Pin() { }
public setTitle(string title) {
this.title = title;
}
public String Title
{
get { return title; }
}
}
这将允许您使用
foreach (Pin obj in ClassListPin.pins)
{
string t = obj.Title;
}
您可以简化类代码这个下面,也将努力为是,但如果你想使你的工作例如,在末尾加上括号:串x =的getTitle();
public class Pin
{
public string Title { get; set;}
}
由于getTitle
不是一个string
,它返回一个参考或delegate
的方式(如果你喜欢),如果不明确地调用该方法。
打电话给你的方法是这样的:
string t= obj.getTitle() ; //obj.getTitle() says return the title string object
然而,这会工作:
Func<string> method = obj.getTitle; // this compiles to a delegate and points to the method
string s = method();//call the delegate or using this syntax `method.Invoke();`
要执行你需要添加括号,即使该方法不带参数的方法。
因此,它应该是:
string t = obj.getTitle();