我有一个基类Base和一个Derived1类,它派生自Base类,另一个派生类Derived2派生自derived1.
下面我提到了几个对象创建的例子(后面是类的多级继承).有人可以帮助我理解那些无法创建对象的情况以及为什么在C#中无法实现对象?
Base b1 = new Base() //Possible
Base b1 = new derived1() // Possible
Derived1 d1 = new Base() // Not Possible
Derived1 d1 = new Derived1() // Possible
Derived2 d2 = new Derived1() // ----
Derived1 d1 = new Derived2() // ----
Derived2 d2 = new Derived2() // Possible
Derived2 d2 = new Base() // ----
Base b1 = new Derived2() // ----
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试构造一个派生自不同对象的对象,但在调用基础构造函数之前,我想进行一些参数验证.
public FuelMotorCycle(string owner) : base(owner)
{
argumentValidation(owner);
}
Run Code Online (Sandbox Code Playgroud)
现在我明白了最初首先调用基础构造函数,有没有办法只能在argumentValidation方法之后调用它?
我想知道什么是第一次调用让我说我有这个代码
public class MyObject
{
public MyObject()
{
MyNumber = 6;
}
public int MyNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我称之为
var o = new MyObject {MyNumber = 8 };
Run Code Online (Sandbox Code Playgroud)
会MyNumber是什么- 6或8?
让我们说我也设置了这个
public int MyNumber { get; set; } = 7;
Run Code Online (Sandbox Code Playgroud)
订单怎么样?什么礼物?
假设我正在这样做......
public class Customer
{
public Customer()
{
customerID = Guid.NewGuid();
}
public Guid customerID { get; set; } = Guid.NewGuid();
}
Run Code Online (Sandbox Code Playgroud)
...因为,我知道当我的开发团队转向C#6.0时会发生这种情况.哪个优先/被使用(构造函数NewGuid()或属性NewGuid())以及为什么?什么时候我们应该使用一个与另一个作为最佳实践?
条件: 如果一个类(ep:A)继承其他类(ep:B).
class B
{
public int id;
public string Name;
}
class A:B
{
public string className;
}
Run Code Online (Sandbox Code Playgroud)
当我创建A的实例时,然后通过A的实例调用id
static void Main(string[] args)
{
A a = new A();
Console.WriteLine(a.id);
}
Run Code Online (Sandbox Code Playgroud)
问题: 当我调用Main时,CLR将检查所有Main的引用类型并将这些类型加载到AppDomain中.**
现在,我只引用A类型 - 将CLR加载B?**我认为B类型将被加载到AppDomain中 - 但为什么呢?
那么,关于动态内存问题?CLR会为A类型提供多少内存?
内存将包含B的字段?如果按照我们的预期,哪个ctor会初始化来自B的这些文件?B的ctor?但值得注意的是,ctor不能继承. 那么,我们如何称呼B的ctor?基地(关键词)?基地如何获得B的ctor?
B :: id让我困惑....我没有B的实例,我可以调用B :: id吗?谁知道这些问题的原因,请向我解释!非常非常!
假设我们在类中有一个静态构造函数,一个普通的构造函数和一个静态方法.
在Main()我们的代码为:
Classname.staticmethod();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,在执行静态方法之前,哪个构造函数被称为1st?: - 静态构造函数或普通构造函数?