从部分类访问类字段
我目前处于一个必须使用部分类的场景中。 在这个部分类中,我有一些方法需要解决另一个类中的字段。
例如
编辑:对不起:第一堂课已被宣布为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
!
我怎样才能克服这个问题?
您发布的代码需要修复一些内容:
在C#中使用部分类时,必须将类的所有部分声明为部分类
你有
public class myClass {} public partial class myClass {}
哪个需要成为
public partial class myClass {} public partial class myClass {}
其次,你正试图设定
myString="newString";
但是myString
是一个没有setter的公共属性。
因此,要么在声明myString
时添加setter
public string myString { get{ return _myString; } set { _myString = value; } }
或者只是使用
_myString="newString";
在你的第二个partical类文件中。
一个常见问题是在不同的命名空间中使用部分类。 命名空间是类名称的一部分, namespace1.myClass
和namespace.a.myClass
被处理为两个完全独立的类。
根据MSDN ,部分类的每个部分应该:
当我将您的代码放入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"; } }
假设两个声明都引用相同的命名空间,则第一个声明不包含partial关键字:
使用partial关键字表示可以在命名空间中定义类,结构或接口的其他部分。 所有部分必须使用partial关键字。 所有部件必须在编译时可用,以形成最终类型。 所有部分必须具有相同的可访问性,例如public,private等等.public,private等。
https://msdn.microsoft.com/en-en/library/wa80x488(v=VS.80).aspx
您只需要在两个地方将该类标记为partial
,而不仅仅是其中之一。
上述就是C#学习教程:从部分类访问类字段分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/983265.html