【问题标题】:Make a c# class "like a property..." [closed]使 C# 类“像一个属性......” [关闭]
【发布时间】:2016-06-15 15:45:29
【问题描述】:

有没有办法做到这一点

Bombs();

还有这个

Bombs(3);

有一个班级?

【问题讨论】:

  • 目的是什么?抱歉,我有点迷路了。
  • 我不得不说使用类作为方法会很混乱。它不像当前的方法语法是令人难以置信的迟钝或任何东西。
  • 进一步,关于“为什么不”......那么为什么你没有设计和构建你自己的以这种方式工作的语言?不要试图粗鲁或开玩笑,但“为什么不”通常是一个非常开放且广泛的问题,没有好的答案。我可以猜测 C# 开发团队中甚至没有人考虑过这种语法,即使他们考虑过,他们显然也没有看到它完成。在任何情况下,除非有人明确知道考虑因素,否则这是一个无法回答的问题。
  • 我没有投反对票。我真的很想解决这个问题。使用say Bombs(3) 有什么好处。它会做什么?您是否会有一个具有单个方法的类,该方法被称为将 3 作为参数传递?
  • Bombs.Explode 究竟应该做什么?属性获取或设置一个值。你也不在做。 Bombs(3); 也很简单:只是不要将Bombs 设为静态,然后您可以创建三个实例并将它们放在列表、数组或其他集合中。

标签: c# properties constructor language-lawyer


【解决方案1】:

你的问题很奇怪,我想不出这样做的任何目的,但我可以回答这个问题,就像问题一样奇怪!

假设您熟悉 C# 委托:

这样定义你的类:

public static class Bomb
{
    public static void Explode()
    {

    }
}

为简单起见,我将使用 .Net Action 委托,如果您想向 explode 函数添加一个整数,只需创建一个采用 int 的委托

Action Bombs = Bomb.Explode;
// Use your delegate here
Bombs();

【讨论】:

  • 我喜欢你对一个非常奇怪的问题的奇怪想法!
  • @JoeBlow 可能使用所有其他人都继承自的基类?
  • 嗯,c#就是这样设计的,我唯一能想到的就是对Object类使用扩展方法,那么每个对象都会有explode函数,但唯一的问题是, c# 的语法要求您编写 this.Explode() 来执行扩展方法,因此从某种意义上说,这就是您想要的,但是拥有确切的语法将需要编辑 C# 本身!另外,我听说他们在 C# 4.0 中添加了扩展属性,但不确定
  • 嗨@HassanKhallouf - 我建议你删除你的答案,这样我就可以删除这个问题。保持网站整洁!并节省版主时间
猜你喜欢
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多