C#的静态类型问题
以下是一个console程序的一段staticvoidMain(string[]args)问题1:为什么Main要声明为静态类型?问题2:我在里面写了个函数,但没有声明为...
以下是一个console程序的一段
static void Main(string[] args)
问题1:为什么Main要声明为静态类型?
问题2:我在里面写了个函数,但没有声明为静态类型,Main要是调用它就会编译报错,是否静态类型都不可以调用非静态类型的函数和属性吗? 展开
static void Main(string[] args)
问题1:为什么Main要声明为静态类型?
问题2:我在里面写了个函数,但没有声明为静态类型,Main要是调用它就会编译报错,是否静态类型都不可以调用非静态类型的函数和属性吗? 展开
5个回答
展开全部
1.类的静态成员是属于类的,类是什么?类是生成对象的模版;静态成员属于类而不是属于某一个对象,进一步说静态成员是共享的(所以在VB叫Share),任何这个类的对象都可以对这个静态成员访问。现在假设静态成员可以访问对象中的变量,由于静态成员是在生成任何具体的对象前已经存在的,那么这个静态成员就根本访问不到任何对象的成员,因为这个时候对象根本就不存在。
2.Main是一个入口函数,由上分析我们知道静态成员是全程唯一的,这才符合入口点要求,一个程序不能有多个入口点阿,所以是必须是静态的。Main这个名字当然是硬性规定了。
======================================================
To: 三根鞋带
"Main要声明为静态类型是硬性规定实在是搞笑"
请三根鞋带看清楚我没有说声明为静态是硬性规定!请问我搞笑在那里?还有我想问问为什么叫Main而不叫其他的名字,我很想知道。
我想说的是我们想要表达的是同一个问题,你和我说表述的都没有问题,就第二个问题来说你表达的更深入一点,就是实例化后调用,这和我表达的并不冲突。而我的表达可能会让人误解,这点我承认。
我还想说的是我没有按照他的顺序回答我觉得先给他讲静态的含义比较合乎逻辑,而并不是按照他问得顺序回答。
2.Main是一个入口函数,由上分析我们知道静态成员是全程唯一的,这才符合入口点要求,一个程序不能有多个入口点阿,所以是必须是静态的。Main这个名字当然是硬性规定了。
======================================================
To: 三根鞋带
"Main要声明为静态类型是硬性规定实在是搞笑"
请三根鞋带看清楚我没有说声明为静态是硬性规定!请问我搞笑在那里?还有我想问问为什么叫Main而不叫其他的名字,我很想知道。
我想说的是我们想要表达的是同一个问题,你和我说表述的都没有问题,就第二个问题来说你表达的更深入一点,就是实例化后调用,这和我表达的并不冲突。而我的表达可能会让人误解,这点我承认。
我还想说的是我没有按照他的顺序回答我觉得先给他讲静态的含义比较合乎逻辑,而并不是按照他问得顺序回答。
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
展开全部
楼上说Main要声明为静态类型是硬性规定实在是搞笑.
你这叫典型的知其然不知其所以然,而且你把两个问题的顺序弄颠倒了..
简单的说,正因为Main是静态的,所以才不用实例化,不然操作系统怎么开始执行你的程序(难道叫操作系统先实例化,再执行?),于是它才有入口函数这么个叫法.
问题2,静态类型可以调用非静态成员,不过必须先实例化该类的一个对象。
public class A{
public void test{
...
}
public static void main(String[] args){
A classa=new A(); //先实例一个对象
classa.test(); //用对象调用非静态方法。
...
}
}
你这叫典型的知其然不知其所以然,而且你把两个问题的顺序弄颠倒了..
简单的说,正因为Main是静态的,所以才不用实例化,不然操作系统怎么开始执行你的程序(难道叫操作系统先实例化,再执行?),于是它才有入口函数这么个叫法.
问题2,静态类型可以调用非静态成员,不过必须先实例化该类的一个对象。
public class A{
public void test{
...
}
public static void main(String[] args){
A classa=new A(); //先实例一个对象
classa.test(); //用对象调用非静态方法。
...
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的小马甲还真多,钻什么牛角尖,不用Main 用别的,你又回问为什么不用Start或 initial ,搞什么呀,鉴定下来说明你 语言表达能力不行,思维混乱 ,不适合做这个,还是搞搞别的行业吧 最好是 卖苦力活,那就不用你伤透脑子了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
好象都有道理。。。。。。不过好象鞋带的更能说服我
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
赞成一楼的,呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询