代码在这里:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program : iTest
{
static void Main(string[] args)
{
Program pp = new Program();
Console.ReadKey();
}
public void FistName
{
get
{
}
set
{
}
}
public void LastName
{
get
{
}
set
{
}
}
public string changeName(string nameToBeChanged)
{
return null;
}
}
interface iTest
{
public void FistName { get; set; }
public void LastName { get; set; }
public string changeName(string nameToBeChanged);
}
}
错误代码:
Error 1 'FistName': property or indexer cannot have void type \\state.sd.local\Home\IT\ITPR13266\Documents\Visual Studio 2010\Projects\ConsoleApplication10\ConsoleApplication10\Program.cs 16 22 ConsoleApplication10
Error 2 'LastName': property or indexer cannot have void type \\state.sd.local\Home\IT\ITPR13266\Documents\Visual Studio 2010\Projects\ConsoleApplication10\ConsoleApplication10\Program.cs 28 22 ConsoleApplication10
Error 3 The modifier 'public' is not valid for this item \\state.sd.local\Home\IT\ITPR13266\Documents\Visual Studio 2010\Projects\ConsoleApplication10\ConsoleApplication10\Program.cs 48 21 ConsoleApplication10
Error 4 'FistName': property or indexer cannot have void type \\state.sd.local\Home\IT\ITPR13266\Documents\Visual Studio 2010\Projects\ConsoleApplication10\ConsoleApplication10\Program.cs 48 21 ConsoleApplication10
Error 5 The modifier 'public' is not valid for this item \\state.sd.local\Home\IT\ITPR13266\Documents\Visual Studio 2010\Projects\ConsoleApplication10\ConsoleApplication10\Program.cs 49 21 ConsoleApplication10
Error 6 'LastName': property or indexer cannot have void type \\state.sd.local\Home\IT\ITPR13266\Documents\Visual Studio 2010\Projects\ConsoleApplication10\ConsoleApplication10\Program.cs 49 21 ConsoleApplication10
Error 7 The modifier 'public' is not valid for this item \\state.sd.local\Home\IT\ITPR13266\Documents\Visual Studio 2010\Projects\ConsoleApplication10\ConsoleApplication10\Program.cs 50 23 ConsoleApplication10
答案 0 :(得分:3)
要以标准方式正常运行属性,您需要删除{ }
并只放置;
,当您需要在属性中实现业务逻辑时,您将使用括号并创建要设置和返回的私有变量。
您的实现中的另一个错误:属性需要返回Type
,因此它不能是void
。我认为名字和姓氏是string
。
在您的情况下,只需要更改为:
public string FirstName
{
get;
set;
}
public string LastName
{
get;
set;
}
创建属性有一个快捷方式:prop
+ TAB + TAB
然后你写下类型,名称和它已经完成。
答案 1 :(得分:0)
问题1:您已将void
声明为您的媒体资源的返回类型。它不是属性的有效返回类型。所以你应该声明正确的返回类型以使其正常运行。
解决方案1:我认为您的属性属于string
类型,因此请将string
指定为属性的返回类型。
问题2:您正在创建auto implemented properties
,因此您应该在;
和get
之后使用分号set
。
来自MSDN:Auto Implemented Properties
自动实现的属性使属性声明更简洁 当属性访问器中不需要额外的逻辑时。
解决方案2:您需要在get
和set
之后添加分号
试试这个:
public string FistName{ get; set;}
public string LastName{ get; set;}
答案 2 :(得分:0)
正如其他人所指出的那样,你的吸气者必须有回报,或者你可以改为自动属性:public string FirstName { get; set; }
。
您在界面中使用public
也会导致错误:
interface iTest
{
public void FistName { get; set; }
public void LastName { get; set; }
public string changeName(string nameToBeChanged);
}
将其更改为:
interface iTest
{
string FistName { get; set; }
string LastName { get; set; }
string changeName(string nameToBeChanged);
}
请注意,接口始终具有公共成员,因此无需指定(并且正如您所见,您实际上无法指定它!)。正如卢卡斯在评论中指出的那样,你不能拥有void FirstName { get; set; }
。语法为string FirstName { get; set; }
,假设您在此处需要string
。