关于c ++/cli的一个小问题.抽象类具有由派生类实现的抽象方法,密封类不允许继承.
那么为什么我们将.NET基类库中的一些类定义为抽象密封,你可以找到很多.. ??!
我只是好奇.为什么需要密封ASP.NET ListItem类?
Jon Skeet在他的深度C#中讲述了一个静态类:
它不能被声明为抽象或密封,尽管它两者都是隐含的.
抽象类是指派生类型的基类.我们只能通过实例化一个派生类型来实例化一个抽象类.另一方面,我们不能从密封的类中获得任何东西.在许多意义上,一个密封的,抽象的课程将毫无用处.Skeet的意思是静态类既抽象又密封?他只是在谈论无法直接实例化它吗?
我们的状态定义为:
sealed trait Status
case object Status {
case object StatusA extends Status
case object StatusB extends Status
case object StatusC extends Status
}
Run Code Online (Sandbox Code Playgroud)
我们的状态如下:
val status = Status.StatusA
Run Code Online (Sandbox Code Playgroud)
有没有办法(de)使用预定义的json4sfomratters 序列化这种结构?
我们尝试使用defult formatter:
implicit val formats = new org.json4s.DefaultFormats
Run Code Online (Sandbox Code Playgroud)
它不起作用.接下来我们尝试使用ext由json4sEnum支持提供的:
implicit val formats = org.json4s.DefaultFormats + new org.json4s.ext.EnumSerializer(Status)
Run Code Online (Sandbox Code Playgroud)
它不再起作用了.我们必须完全改变sealed trait实际Enumeration的结构.有没有办法用case classes 做?
我注意到C++中有密封和接口关键字.这仅适用于CLR C++吗?如果没有,什么时候密封和接口添加到C++标准?它们在C++中的含义与它们在C#中的含义相同吗?如果没有,我如何获得标准C++中的等价物?
我有一个我正在上课的课程:
public sealed class WorkItemType
Run Code Online (Sandbox Code Playgroud)
它ToString很弱(只是显示Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemType).
有没有办法覆盖这个来显示名称WorkItemType?
通常我只会在新类中聚合该值,但我在WPF中使用它来进行绑定(我希望在组合框中有一个WorkItemTypes列表,并将所选值分配给绑定WorkItemType变量.)
我想我在这里运气不好,但我想我会问.
一个简单的问题,但谷歌没有答案!
我今天正在打墙,因为Silverlight中的PasswordBox是密封的.我不知道他们为什么那样做.有人对此有所了解吗?
我试图在 Swift 中实现 Kotlin 密封类的效果,以便我可以实现基于类的替代方法来替代具有关联类型的枚举。
以下结果会导致编译器错误:
final class Foo {
class Bar: Foo {} // Error: inheritance from a final class "Foo"
}
Run Code Online (Sandbox Code Playgroud)
有没有办法有效地“密封”一个 Swift 类,使其免受进一步的子类化,但仍然首先允许子类化?
在下面的代码段中,我FILE_LOCATION从该类外部引用,并且在执行后流入此类以访问该常量,由于某种原因而不是继续返回到进行常量调用的位置,执行继续实例化单例.
我的问题是两部分; 为什么会发生这种情况,我该如何解决呢?我试图创建两个部分类,一个仅用于常量,另一个用于其他所有,但执行仍然继续到另一个部分类来实例化单例.
public sealed class Foo
{
public static readonly string FILE_LOCATION = @"path\to\file";
// (singleton code modeled after:
// http://csharpindepth.com/articles/general/singleton.aspx --fourth version)
private static readonly Foo foo = new Foo();
// Rest of class implementation...
}
Run Code Online (Sandbox Code Playgroud)
该属性是在按钮单击时从表单类的实例引用的:
public partial class MyForm : Form
{
public void button1_Click(object sender, EventArgs e)
{
string s = Foo.FILE_LOCATION;
// this location is only reached AFTER the singleton is instantiated.
}
}
Run Code Online (Sandbox Code Playgroud) 我用 c# 编写了一个继承 TextBox 的类,现在我想为其添加一个虚拟属性:
public virtual Color WatermarkColor
{
private get { return _watermarkColor; }
set
{
_watermarkColor = value;
OnEnter(null);
OnLeave(null);
}
}
Run Code Online (Sandbox Code Playgroud)
但发生了这个错误:
错误 1 'xXx.TextBoxPlus.WaterMark.get' 是密封类 'xXx.TextBoxPlus' 中的新虚拟成员