问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#里面静态方法和静态变量的一点问题?

发布网友 发布时间:2023-05-01 23:35

我来回答

2个回答

热心网友 时间:2023-10-13 23:34

对于运行以及效率是没有多大区别的,但是对于有追求的程序员是有很大区别的。
实例方法必须在实例化一个具体对象之后才能访问,为了封装性,对象的成员变量不允许外部程序访问,只允许实例方法访问,也就是做代码访问权限隔离。这种机制对于面向对象思想指导下编程是必须的也是标准。

但是我们往往有时候需要做一些数据处理,而这些处理即属于某个类但又具有通用性,而往往又具有一定代码量(需要封装在一个方法/函数内),并且其处理的数据与类中其他成员变量毫无关系。
此种情况下把方法封装在某个类时很麻烦,会存在几个问题:
1、被处理数据与该类业务逻辑完全无关却封装在类中很奇怪,对于整体架构造成破坏(会导致逻辑松散)。
2、创建对象过程过于冗长(因为外部程序很多不同地方都会经常调用,太累赘,有强迫症的人还要注意每次设置为null)
3、代码不美观可读性差(代码多了容易视觉繁杂)

举个例子,假如你在开发一个数据库系统,设计了一个类,专门处理数据库日期时间的存取以及显示转换(比如按指定格式输出),现在假设其中封装了一个检查日期有效性的公共方法,该方法一方面服务于类成员,另一方面,在很多场合,比如通过用户界面接受用户输入日期时也要校验,此时我们希望先进行校验,如果数据有效(包括其他数据)再创建数据对象把数据传递下去(因为创建对象有消耗),这时候希望不实例化的情况下调用类方法,这就是静态方法的需求场景之一。
假设这个自定义日期类为MyDate,下面是伪代码,
Date d;
d=GetUIDate();//取得界面日期数据
if (MyDate.IsValid(d)) //直接使用类名访问静态方法 ,无需事先定义对象名和new
{
//其他处理代码
}

热心网友 时间:2023-10-13 23:34

参考以下:
实例方法的话,需要对类进行实例化以后才可以使用
静态方法,可以直接通过类名.方法名进行访问。对于静态成员也是如此
在哪里调用的话,区别不大
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
iOS 16.1.1值得更新升级吗 ios16.1.1正式版建议更新吗 iOS 16.1.1修复了哪些问题 ios16.1.1值得更新吗?ios 16.1.1新增内容及更新建议 iPhone 12升级iOS 16.1.1之后好用吗 iOS 16.1.1更新内容介绍 iOS 16.1正式版新增了哪些新功能?iOS 16.1正式版值得升级吗? ios 16.1正式版解决了哪些问题和BUG ...森先生是他“最好的老师” 你喜欢这样的老师吗? ... 你喜欢怀特森这样老师吗?说说你的看法.250字 C#中静态变量和方法用什么用处 底迪的拼音狐底迪的拼音是什么 底处的拼音狐底处的拼音是什么 底贡的拼音狐底贡的拼音是什么 底粪的拼音狐底粪的拼音是什么 底遏的拼音狐底遏的拼音是什么 底绩的拼音狐底绩的拼音是什么 45岁投保什么重疾险性价比最高? 梦见小鬼纠缠我不让我走的预兆 富硒高钙小分子肽价格 富迪小分子肽多少钱一盒 富迪小分子肽价格 富迪小分子肽吃后有什么反应 微信骗钱是否会被抓 内膜呈增生期改变,请问这样是什么意思 数学论文有什么用? 如何写小学数学电教论文 什么是电教论文 我的win81电脑右下方的电脑小图标有个小红叉显示连接不可用没有禁 热情的反义词是哪一个? 什么时候使用静态变量和方法 杀无赦的意思是什么 是在加油站50米处失火,是正规加油站,不过油是非正规渠道。油罐报销,无伤亡,有消防去救火,会怎么处罚 乙家失火了,甲怕会殃及自己家,就去灭火了。那么构成甲的行为无因管理吗? 三星为何原装壳折痕不明显 一只乌龟一只蜗牛打一成语 梦见带了一顶帽子的预兆 五生的解释 色蕴有五种生什么意思?如何解释? 五种的解释 什么五行生什么五行? 民间开赦是什么 签了借款合同还需要写借条吗 男朋友叫丁力,我该给他起个什么外号? 姓黄和姓丁的孩子起什么外号 辽宁铁道职业技术学院2022年单招录取线 辽宁生态22年单招分数线 辽宁地质工程职业技术学院单招历年分数线 辽宁经济职业技术学院单招分数 辽宁医药职业学院2022年单招分数