在C#中静态函数和实例函数的区别?

 我来答
科创17
2022-10-20 · TA获得超过5918个赞
知道小有建树答主
回答量:2846
采纳率:100%
帮助的人:177万
展开全部
静态变量 静态对象 静态函数和非静态函数的区别.(我的理解,大家看看对不对)先明确一下语言:asp C#\x0d1、静态变量:\x0dstatic string str1 = "1234";\x0d2、静态对象\x0dstatic SqlConnection = new SqlConnection();\x0d3、静态函数class aa{public static string test(string str){return str & "111";}}调用aa.test("123");\x0d4、非静态函数(就是需要实例化的)class aa{public string test(string str){return str & "111";}}调用aa a1 = new aa();\x0da1.test("123");\x0d1、静态变量.在内存里是应该只有一份,不管是不是多线程,是不是多用户同时访问,静态变量只占用一份内存.\x0d2、静态对象和静态变量也差不多,只有一份.\x0d个人认为 SqlConnection 是不应该只用静态的,除非你的网站没有(或很少)并发访问的情况.\x0d否则就很容易出现千军万马过独木桥的现象.挤不过去了就会瘫痪的.而且连接池也就无用武之地了.\x0d3、非静态函数,就是在调用的时候必须先实例化,然后才能访问到.\x0d类的属性、函数的参数、返回值,这些应该是在实例化的时候产生一份,供调用者单独使用,其他的调用者是绝对访问不了的.\x0d那么函数(或者说是类)呢?也又生成了一份吗?还没有弄清楚.\x0d4、静态函数,直接调用不需要实例化,也没有“属性”\x0d当然函数内定义的变量、对象也应该是独立的(多份),有一个调用的就产生一份.\x0d小结静态函数和非静态函数最大的区别是,静态的不能访问所在类的属性和内的私有变量,其他的好像都一样了.\x0d再有就是在调用的时候会不会“复制”一遍算法(函数本身)?(我感觉是都不会复制的).\x0d两者需要的参数,返回值应该是独立的,一个调用者一份,一个调用者不会访问到其它调用者的参数和返回值.\x0d不知道我的看法对不对,请大家检查一下.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式