因此,我找到了很多答案来回答这个问题,如果和为什么在抽象类中定义一个构造函数是可以的。
我目前正试图使参数化构造函数在具有类型参数的抽象类中可用:
public abstract class Cell<T>
{
int address;
T value;
protected Cell<T>(int address, T value)
{
}
}
但是c#拒绝了它,智能感知完全崩溃了。那么,为什么在抽象类中有一个构造函数是可能的,但是一旦抽象类获得一个类型参数,一切都会拒绝它?
我正在将一些代码从VB.NET迁移到C# (4.0)。
我发现像这样的结构:
Private Sub WhitePointHttpApplicationBase_BeginRequest(sender As Object, e As System.EventArgs) Handles Me.BeginRequest
End Sub
在C#中翻译这样的行为最直接的方式是什么?
我正在使用由多个类继承的C#中的一个抽象类。在我的代码中,我需要的是一个静态属性,比如" unset ",它是类的一个静态实例,它的主要属性被定义为一个未设置的值。一个一般的例子如下:
public abstract class Person
{
public string Name {get; set;}
public string PhoneNumber {get; set;}
public static readonly Person Unset = new Person() {
Name =
我用C#编写了一个简单的泛型类。
class Foo<T>
{
public object O{get;set;}
public Foo(object o)
{
O=o;
}
}
以及从它继承的另一个类
class Bar:Foo<object>
{
public Foo(object o):base(o)
{ }
}
我的问题是,我是否可以避免在Bar类中编写构造函数,因为它没有什么特别之处。PS:构造函数中的参数是必要的。
C#中的类怎么可能没有定义构造函数呢?例如,我有一个类
internal class TextStyle
{
internal string text = "";
internal Font font = new Font("Arial", 8);
internal Color color = Color.Black;
}
在代码中,这个类被实例化为
TextStyle textParameters = new TextStyle();
我知道抽象类中的构造函数应该在C#中得到保护。
但是一些抽象类不需要非参数的构造函数。例如:
public abstract MyAbstractClass {
public abstract Method1();
public abstract Method2();
// non-parameterless constructors are not needed
}
我的问题是,在上面的类中,是否需要提供一个空的受保护的构造函数来覆盖默认的隐式构造函数?这就是:
public abstract MyAbstractClass {
protected MyAbs
我得到了一个带有抽象基类的类的C#结构,以及从这个抽象类派生的各种类。
[System.Xml.Serialization.XmlInclude(typeof(B))]
public abstract class A {
...
}
[Serializable]
[XmlType("typename")]
public class B : A {
...
}
此外,我在另一个C类中使用B类的实例作为一个字段,其抽象类型如下:
public class C {
...
public A myItem { get; set; } //A is actuall
我有一个关于FxCop的问题和警告:Abstract types should not have constructors。
这对于许多抽象类(可能是所有的,我还没有检查过)都显示出来了。在我看来,它们中的大多数都没有新的方法,所以我假设是编译器添加了一个默认的方法。因此,为了删除它,我添加了一个私有默认构造器(Private Sub New()),这意味着所有继承类都无法构建,并返回错误:Class 'InheritingClass' has no accessible 'Sub New' and cannot be inherited.
这看起来很奇怪,因为
我试图构建一种基于遍历策略和更新策略以不同方式工作的算法。然而,并不是每一种更新策略都适用于每一种遍历策略。因此,我认为更新策略只能用相应的遍历策略实例化。我想为此强制构造函数(见下文)。以便子类必须检查它们是否支持该策略。
我现在有一个接口
public interface TraversalStrategy {
...
}
和(无效的)抽象类
public abstract class UpdateStrategy {
protected TraversalStrategy travStrategy;
public abstract UpdateStrategy(TraversalStr
令我惊讶的是,C#中的抽象类也可以不使用抽象方法。
abstract class AbstractDemo
{
public void show()
{
Console.WriteLine("In Show Method");
}
}
class MainDemo:AbstractDemo
{
public static void Main()
{
Console.WriteLine("In Main Method");
}
}
有什么解释吗?