我目前正处于一个必须使用部分类的场景中。 在这个部分类中,我有一些方法需要解决另一个类中的字段。
例如
编辑:对不起:第一堂课已经宣布为partial
!
public partial class myClass
{
private string _myString;
public string myString
{
get { return _myString; }
set { _myString = value; }
}
}
和
public partial class myClass
{
public void doSomething()
{
myString = "newString";
}
}
编译器说部分类中不存在myString
!
我该如何克服这个问题?
答案 0 :(得分:29)
一个常见的问题是在不同的命名空间中使用部分类。命名空间是类名的一部分,namespace1.myClass
和namespace.a.myClass
被视为两个完全独立的类。
根据MSDN, 部分类的每个部分都应该:
partial
修饰符答案 1 :(得分:7)
您需要使用您发布的代码修复一些事项:
在C#中使用部分类时,必须将类的所有部分声明为部分类
你有
public class myClass {}
public partial class myClass {}
哪个需要成为
public partial class myClass {}
public partial class myClass {}
其次,你正试图设置
myString="newString";
但myString
是没有制定者的公共财产。
所以要么在声明myString
public string myString
{
get{ return _myString; }
set { _myString = value; }
}
或只是使用
_myString="newString";
在你的第二个特殊类文件中。
答案 2 :(得分:1)
当我将代码放入Visual Studio时,我得到了一个不同的错误:
myString = "newString";
Error Property or indexer 'ConsoleApplication1.Program.myClass.myString' cannot be assigned to -- it is read only
如果我改成它,它可以正常工作:
_myString = "newString";
修改:
你不需要在两个宫殿中将一个类标记为部分,这编译得很好:
public class myClass
{
private string _myString;
public string myString
{
get { return _myString; }
}
}
public partial class myClass
{
public void doSomething()
{
_myString = "newString";
}
}
答案 3 :(得分:1)
假设两个声明都引用相同的命名空间,则第一个声明不包含partial关键字:
使用partial关键字表示 该类的其他部分,结构, 或界面可以在 命名空间。所有部件必须使用 部分关键字。所有部件必须 在编译时可以形成 最后的类型。所有部件必须 具有相同的可访问性,例如 public,private等等.public,private等。
http://msdn.microsoft.com/en-en/library/wa80x488(v=VS.80).aspx
答案 4 :(得分:0)
您只需在两个位置将该课程标记为partial
,而不仅仅是其中一个。