c# 在winform里如果想自己封装一些常用的函数 直接通过
函数名() 调用 而不是
类名.函数名()
不能实现吗? 必须要类吗? 感觉好多余啊
当你把类看作分类来理解的话,你就不会觉得多余了。分门别类,在软件开发中是很重要的一环。
比如 一个函数 就叫 md5() 直接写md5调用多方便 也不需要分类就能很清晰 难道非要分类才能使用吗
@开窍: 你怎么确定只有一个md5函数呢
@开窍: 那如果假如你写了一个函数叫md5,我也写了一个函数也叫md5,你使用的时候直接md5(),那么程序最终用你的还是用我的?可能你会说那就不要写重复函数嘛,可实际开发过程中,不同业务中极大可能存在同名函数,比如,我写的订单创建方法叫Save,你写的用户创建方法也叫Save,现在没有类的概念,那怎么办?只能我叫OrderSave,你叫UserSave,那这和类的概念有什么区别呢,每个业务里的方法还都得在命名前带上前缀才能识别,那我何不滋生出一个类的概念,里面的方法想叫Save叫Save,想叫Search叫Search,我只需要保证我的类是唯一的,不冲突的即可,或者说,我只需保证同一命名空间下,我这个类是唯一的,那么编译器就能通过类.方法名去找到我要执行的方法。
@默卿: 感谢大家的耐心回答 其实我就是面向对象大多数还是很方便的 但是有些函数(比如没有明确的分类,通用的一些函数) 我就是单纯的希望可以实现跟 面向过程的语法一样 去调用
比如 md5() 这个 我只是举个例子 如果定义的话 我肯定是用一个别人没用过的函数名定义
就比如 messagebox.show()
我希望实现的效果就是比如: 可以定义一个 messagebox1() 封装后调用时就直接写他 不用.show
也不用 xx.messagebox() 就是直接写 xxx()就能用
写一个静态工具类,把常用的函数放进去,调用起来还是很方便的
直接函数名?属于哪里?哪个类?如何存放。
不能。是的。
貌似记得.net 5,c# 9可以省略到这样:
https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/
----------------
In C# 9.0 you can just choose to write your main program at the top level instead:
using System;
Console.WriteLine("Hello World!");
在高版本C#中(忘了最低多少)可以实现,用using引用静态类就可以直接调用静态函数
using static System.Math;
void main()
{
var a = Abs(-1);
// var a = Math.Abs(-1);
}
高版本?2.0就支持了吧
@flyfishing: 查了一下,是6.0加进去的
赞~不过引用两个有相同静态函数名的静态类,会直接冲突吧
@疯疯过: 当然会冲突,不过用类名限定就好了。
随便找了一篇博客
https://www.cnblogs.com/linianhui/p/csharp6_using-static.html#auto-id-2
貌似记得.net 5,c# 9可以省略到这样,你可以深入去学习一下:
https://devblogs.microsoft.com/dotnet/welcome-to-c-9-0/
------------
In C# 9.0 you can just choose to write your main program at the top level instead:
using System;
Console.WriteLine("Hello World!");
c#只是语法,如果是脚本跑,那也是可以的,连main都可以不要。
eg.https://www.cnblogs.com/huapiaoshuiliuxi/p/9471657.html
(不确定是否能打开,给个图)
他人论述论调主要是基于.net framework 、core、mono而谈。
确实这些个目前的版本(net5和c#9还没最终发布)的约定是类(然后规定的几种入口点),这种模式是自编辑器...到最终JIT中的约束形成。
而玩在其他地方(当然你也可以认为它不叫c#,因为按照微软官方才算正统的话,那么每个c#版本微软都写得很清楚)