什么时候C#能提供同一个方法可以有多个名字的语法?

上海好程序员 2018-11-12 05:26:21
比如:
public static class FileUtil{
//Text Save
public static void Write,Create,Save(string path,string text)
{
//TODO:
}
}
这种
...全文
825 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
上海好程序员 2019-03-29
  • 打赏
  • 举报
回复
目前最接近的语法是用lambda表达式,可以省下两个大括号和一个return

public static void Save(string path, string text, Encoding encoding = null)
=> Write(path, text, encoding);

public static void Save(string path, IEnumerable<string> lines, Encoding encoding = null, bool endLine = true, string crlf = "\r\n")
=> Write(path, lines, encoding, endLine, crlf);

public static string GetText(string path, Encoding encoding = null)
=> Read(path, encoding);

public static string[] GetLines(string path, Encoding encoding = null)
=> ReadLines(path, encoding);

public static string FirstLine(string path, Encoding encoding = null)
=> ReadLines(path, encoding)[0];
上海好程序员 2019-03-29
  • 打赏
  • 举报
回复
目前最接近的语法是用lambda表达式,可以省下两个大括号和一个return

        public static void Save(string path, string text, Encoding encoding = null)
            => Write(path, text, encoding);

        public static void Save(string path, IEnumerable<string> lines, Encoding encoding = null, bool endLine = true, string crlf = "\r\n")
            => Write(path, lines, encoding, endLine, crlf);

        public static string GetText(string path, Encoding encoding = null)
            => Read(path, encoding);

        public static string[] GetLines(string path, Encoding encoding = null)
            => ReadLines(path, encoding);

        public static string FirstLine(string path, Encoding encoding = null)
            => ReadLines(path, encoding)[0];
qq_37795869 2018-11-27
  • 打赏
  • 举报
回复
这个语法看似好强大
liusa1997 2018-11-26
  • 打赏
  • 举报
回复
你这么整没有实际效用啊,每个方法区分开来有利于管理,同一个方法名用构造即可,如果一个方法是可以写多个方法名的话,看起来代码少了,但是分开管理或者说是此时这多个方法名有不同功能的话又只有分开写,就毫无意义了
「已注销」 2018-11-21
  • 打赏
  • 举报
回复
我猜测楼主可能只是举个例子而已,并不会真的起 Create、Read、Write 这样容易引起混乱的名字。
就比如在 Java 中,假如这三个静态方法做的事情一样:
ClassName obj1 = ClassName.make(0, 1);
ClassName obj2 = ClassName.create(0, 1);
ClassName obj3 = ClassName.build(0, 1);
这种情况下就避免了重写函数,相当于起别名。
otWayalways 2018-11-21
  • 打赏
  • 举报
回复
这个拿来有啥用吗,你真的想的话。自己再写方法调用同一个方法,你写一万个都行啊
otWayalways 2018-11-21
  • 打赏
  • 举报
回复
引用 12 楼 sp1234 的回复:
[quote=引用 9 楼 fromfire2 的回复:] 有这个语法多爽,写入文本今天打Write明天写Create后天写Save,爽的一比
你写三个方法,调同一个方法,这不是更加灵活?![/quote]哈哈对啊,你可以写好几个方法,调同一个方法
xuzuning 2018-11-21
  • 打赏
  • 举报
回复
如果不是期望动态方法,那就一点意义都没有了
方法名通常表示了方法的功能,如果让 load 和 save 取完成同一工作,不就乱套了吗?
上海好程序员 2018-11-21
  • 打赏
  • 举报
回复
现在写别名就是 引用 参数照抄
要说没用途确实没用
要说有用 就是把 “引用 参数照抄”简化
比如文本操作 Write Create Save 完全可以是一个意思,用别名定义同一函数,代替“引用 参数照抄”

如果你曾经写过类似的代码:引用-参数照抄 就不要说没意义
上海好程序员 2018-11-21
  • 打赏
  • 举报
回复
引用 28 楼 xiaoxiangqing 的回复:
估计用处不大,不然早就提供了


是的用途不大,就是别名
大然然 2018-11-21
  • 打赏
  • 举报
回复
调用者有时候就想知道某个方法到底干了什么事情
上海好程序员 2018-11-21
  • 打赏
  • 举报
回复
可以是

引用 32 楼 xuzuning 的回复:
如果不是期望动态方法,那就一点意义都没有了
方法名通常表示了方法的功能,如果让 load 和 save 取完成同一工作,不就乱套了吗?



create save write 可以是同一工作 load和save肯定不是同一工作,用别名也要符合自然规律
上海好程序员 2018-11-21
  • 打赏
  • 举报
回复
引用 32 楼 xuzuning 的回复:
如果不是期望动态方法,那就一点意义都没有了
方法名通常表示了方法的功能,如果让 load 和 save 取完成同一工作,不就乱套了吗?



create save write 可以死同一工作 load和save肯定不是同一工作,用别名也要符合自然规律
上海好程序员 2018-11-21
  • 打赏
  • 举报
回复
是啊 就是别名
就是不同名字同一指针
  • 打赏
  • 举报
回复
就是C的函数指针
E次奥 2018-11-20
  • 打赏
  • 举报
回复
引用 25 楼 sp1234 的回复:
等到 c# 10 版本发布,你再试这个语法。
忽悠人小朋友啊!
www4112008 2018-11-20
  • 打赏
  • 举报
回复
引用 25 楼 sp1234 的回复:
等到 c# 10 版本发布,你再试这个语法。


上海好程序员 2018-11-18
  • 打赏
  • 举报
回复
引用 14 楼 sp1234 的回复:
list --> lisp

现在确实有许多高级的书写代码的知识,我会在 csdn 上尽量多用 c# 版本7 的一些非常实用的新语法。但是对于一个方法可以声明多个名字,类似
void A|B|C(int x)
{
}
这种代码,显然意义不大。


@@@@@@@@@@@@@@@@
上海好程序员 2018-11-18
  • 打赏
  • 举报
回复
声明委托。。。。 还不如声明+调用!!!

@14# @以专业开发人员为伍
“c# 版本7 void A|B|C(int x) ”

这个我现在开发工具是VS2017,怎么使用呢?
  • 打赏
  • 举报
回复
等到 c# 10 版本发布,你再试这个语法。
加载更多回复(21)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧