C# 不能直接声明函数吗? 只能写类吗?

2020-09-05 18:51发布

问题:

c# 在winform里如果想自己封装一些常用的函数 直接通过
函数名() 调用 而不是
类名.函数名()

不能实现吗? 必须要类吗? 感觉好多余啊

回答1:

当你把类看作分类来理解的话,你就不会觉得多余了。分门别类,在软件开发中是很重要的一环。



回答2:

写一个静态工具类,把常用的函数放进去,调用起来还是很方便的



回答3:

直接函数名?属于哪里?哪个类?如何存放。



回答4:

不能。是的。



回答5:

在高版本C#中(忘了最低多少)可以实现,用using引用静态类就可以直接调用静态函数

using static System.Math;

void main()
{
     var a = Abs(-1); 
     // var a = Math.Abs(-1);
}


回答6:

其实楼上的“ 默卿 ”说的已经挺准确了。我就说个实际的体验,对于一个通用的工具类库,就当有10个工具类,每个工具类里有10个方法,也就是这个工具类库有100个方法(实际项目更多)。像VS有智能提示吧,比如你想找Math类中的Min方法,但你全称不知道,只知道是M开头,你输入一个M,然后给你把其他类库里的带M的方法显示出来,本来你通过Math.M就只给你两个选项,现在你要在N多选项中找,是不是很头疼。再则,如果其他类也有Min方法,这样就直接冲突了,难道你每个类都要设计不同方法?

回答7:

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods 可以达到类似效果



回答8:

貌似记得.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#版本微软都写得很清楚)



标签: C# winform