C# Java到C的转换
我需要将几个Java类转换为C#,但我遇到的问题很少 在Java中,我有以下类层次结构:C# Java到C的转换,c#,java,C#,Java,我需要将几个Java类转换为C#,但我遇到的问题很少 在Java中,我有以下类层次结构: public abstract class AbstractObject { public String getId() { return id; } } public class ConcreteObject extends AbstractObject { public void setId(String id) { this.id= id;
public abstract class AbstractObject {
public String getId() {
return id;
}
}
public class ConcreteObject extends AbstractObject {
public void setId(String id) {
this.id= id;
}
}
有一些AbstractObject的实现不需要定义setId(),因此我无法在层次结构中向上移动它
如何使用属性将其转换为C#?这可能吗?当您在.Net中只提供属性的
get
部分时,您明确地告诉编译器该属性是只读的。这比不提供集合
更重要。这在vb版本的属性语法中很明显,您还必须显式声明属性为只读
您可以同时提供一个getter和setter,但在抽象setter中抛出一个
NotImplementedException
,用适当的属性和文档对其进行修饰,以便在setter被属性重写之前没有人使用它。否则,您最好还是保留这些方法,以避免Java和.Net版本之间的代码断开连接。当您在.Net中只提供属性的get
部分时,您会显式地告诉编译器此属性是只读的。这比不提供集合
更重要。这在vb版本的属性语法中很明显,您还必须显式声明属性为只读
您可以同时提供一个getter和setter,但在抽象setter中抛出一个
NotImplementedException
,用适当的属性和文档对其进行修饰,以便在setter被属性重写之前没有人使用它。否则,您最好还是保留这些方法,以避免Java和.Net版本之间的代码断开。我建议使用您已经概述过的方法调用,以确保调用方清楚该类的用法。如果您打算使用属性实现它,那么您可以执行以下操作(可以找到新关键字的一些文档)
我建议使用您已经概述过的方法调用,以确保调用方清楚该类的用法。如果您打算使用属性实现它,那么您可以执行以下操作(可以找到新关键字的一些文档)
public abstract class AbstractObject {
protected string id;
public string Id
{
get { return id; }
}
}
public class ConcreteObject : AbstractObject
{
public new string Id
{
get { return base.Id; }
set { id = value; }
}
}