在C#中结构为什么不能继承?
在C#中结构为什么不能继承?
在面向物件语言出现之前的语言都是面向过程的,是没有类的,只有结构(结构是由一系列具有相同型别或不同型别的资料构成的资料集合),那个时候连类都没有,更不用说继承了。有人说struct相当于是一个轻型类。
C#中的 类 为什么不能多继承!
你好,设定为如此,多继承不安全(不是说程式码执行的不安全,而是对于整个设计而言,多继承较之单根继承无法让开发者更轻易地掌控整个继承树,还会带入臃肿成员,成员的呼叫还可能会冲突而不安全.).你可以使用介面在一定程度上代替使用.望采纳
C#高手进.C#中结构中的栏位为什么不能赋初始值?
因为结构是值型别。结构定义时,程式设计师早就想好了,里面的栏位都是有用的。结构不允许宣告解构函式(Destructor),且Common Language Runtime(CLR)不会在任何结构上呼叫Finalize方法。所以,结构的空间,能省则省。当您将一个结构变数赋值给另一个,或是将结构例项传递到程式变数时,所有变数成员的值会复制到新的结构中。声时初值的话,这样做,会造成很多负担。值型别的话,你一宣告分配空间,就造成空间的浪费,所以才不让赋予初使值吧。 个人见解。
C#中为什么结构不能new
结构是值型别:值型别在堆叠上分配地址,所有的基型别都是结构型别,例如:int 对应System.int32 结构,通过使用结构可以建立更多的值型别
主要是值型别和引用型别问题,建议看下《你必须知道的.Net》,里有非常详细的说明。希望对你有帮助
求采纳
C++中结构体能否被另一个结构体继承
可以,结构体和类一样,具有派生,继承,封装的性质
在C#中 结构可以实现介面,结构不能用于继承 ,结构中的栏位能否赋值?
介面相当于方法模型,结构里面可以写方法,当然可以实现介面.
结构属于值型别的一种资料结构,不能继承很正常,结构中的栏位在定义的时候不可以直接赋值,需要通过建构函式、属性以及方法赋值,下面有个小例子:
程式码:
public struct Student
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
public Student(string name, int age)
{
this.name = name;
this.age = age;
}
public void ResetAge(int age)
{
this.age = age;
}
public override string ToString()
{
return string.Format("{0}'s age is {1}", this.name, this.age);
}
}
class Program
{
static void Main(string[] args)
{
Student st1 = new Student("Smith",11);
Console.WriteLine(st1.ToString());
st1.ResetAge(22);
Console.WriteLine(st1.ToString());
st1.Age = 33;
Console.WriteLine(st1.ToString());
Console.Write("Press any key to exit:");
Console.ReadKey();
}
}
输出:
Smith's age is 11
Smith's age is 22
Smith's age is 33
Press any key to exit:
c#中为什么静态类不能被继承?
静态类 里面只包含 静态方法 静态建构函式 静态成员 里面不能有例项物件
继承是一个例项化的过程,所以不能被继承,但是可以实现介面。interface
C++中的结构体能不能继承
写个小例子试一下,可以继承
#include<iostream>
using namespace std;
struct A
{
int a;
int b;
};
struct B : A
{
int c;
};
void main()
{
struct B stB;
stB.a = 1;
cout<<stB.a<<endl;
}
c++建构函式为什么不能被继承
不能被隐式继承,必须要写出来。当你要显式呼叫建构函式时就明白了
class B{
B(int)
}
class C : public B{
C(int a)
:B(a){}
}