C# 可以这样做吗:MyInt.CustomMethod

C# 可以这样做吗:MyInt.CustomMethod,c#,methods,int,C#,Methods,Int,我正在用C#做一个游戏,你有弹药和最大容量 有可能做出这样的方法吗 ammont.Maxed 所以我可以这样使用它: if(amomint.Maxed==true)等 检查ammoint是否等于maxAmmoInt 编辑: 感谢您的输入,但最后一个问题是:扩展必须在单独的类中吗?您可以创建一个forint。比如: public static class MyExtensions { public static bool Maxed(this int parameter) {

我正在用C#做一个游戏,你有弹药和最大容量

有可能做出这样的方法吗

ammont.Maxed

所以我可以这样使用它:

if(amomint.Maxed==true)等

检查
ammo
int是否等于
maxAmmoInt

编辑:

感谢您的输入,但最后一个问题是:扩展必须在单独的类中吗?

您可以创建一个for
int
。比如:

public static class MyExtensions
{
    public static bool Maxed(this int parameter)
    {
        return parameter > 100;
    }
}
然后你可以这样称呼它:

if(ammoInt.Maxed())
您可以为
int
创建一个。比如:

public static class MyExtensions
{
    public static bool Maxed(this int parameter)
    {
        return parameter > 100;
    }
}
然后你可以这样称呼它:

if(ammoInt.Maxed())

从技术上讲,是的。扩展方法在.Net中提供了这一点。但这是一个糟糕的设计

public static class MyExtensions
{
    public static public bool IsMaxed( this int value )
    {
        return value > 50; // or whatever
    }
}

int thing = 10;
bool result = thing.IsMaxed( );

这允许您在任何int对象上调用该方法。但正如我所说,你可能应该重新考虑它的设计,因为这是一个黑客行为。

从技术上讲,是的。扩展方法在.Net中提供了这一点。但这是一个糟糕的设计

public static class MyExtensions
{
    public static public bool IsMaxed( this int value )
    {
        return value > 50; // or whatever
    }
}

int thing = 10;
bool result = thing.IsMaxed( );

这允许您在任何int对象上调用该方法。但是就像我说的,你可能应该重新考虑它的设计,因为这是一个黑客行为。

我认为你有两个选择

1) 创建一个具有
bool
属性的包装类,该属性检查其值是否大于
100

public class Ammo
{
    public int Value {get; set;}
    public bool Maxed 
    {
       get
       {
         return Value > 100;
       }
    }
}
2) 您可以创建一个扩展方法

public static class CustomExtensions
{
   public static bool Maxed(this int value)
   {
      return value> 100;
   }
}

我认为你有两个选择

1) 创建一个具有
bool
属性的包装类,该属性检查其值是否大于
100

public class Ammo
{
    public int Value {get; set;}
    public bool Maxed 
    {
       get
       {
         return Value > 100;
       }
    }
}
2) 您可以创建一个扩展方法

public static class CustomExtensions
{
   public static bool Maxed(this int value)
   {
      return value> 100;
   }
}

看扩展方法看扩展方法需要在一个单独的类中看扩展方法看扩展方法看扩展方法需要在一个单独的类中为什么你说它是一个黑客?而且类也必须是静态的,FYIYou真的不应该向基元类型添加扩展。在这种情况下,看看这个int是否达到最大值可能是有意义的。但是这个方法并不是真的适用于项目中的所有整数。所以在任意一个随机点上,他都可以得到一个整数,然后看到它有一个IsMaxed方法。没有上下文。您应该在回答中指定,因为如果OP项目中的所有INT都具有此属性,则这不会是黑客攻击。这就是为什么我要问这个问题…它需要从多个角度来看:)你为什么说它是一个黑客?而且类也必须是静态的,FYIYou真的不应该向基元类型添加扩展。在这种情况下,看看这个int是否达到最大值可能是有意义的。但是这个方法并不是真的适用于项目中的所有整数。所以在任意一个随机点上,他都可以得到一个整数,然后看到它有一个IsMaxed方法。没有上下文。您应该在回答中指定,因为如果OP项目中的所有INT都具有此属性,则这不会是黑客攻击。这就是为什么我必须问这个问题……它需要从多个角度来看:)我甚至不会叫它
myammont
,只叫它
ammon
。(此外,它可能是一个不可变的结构,而不是一个可变的类,尽管它是一个结构(正确地)我完全同意,这更多的是为了证明它实际上是一个简单的包装器类。不过我的观点是,你不应该把它看作包装器,而是“ammo”的表示形式,它只不过是一个int而已。从概念上讲,它不是一个包装器,它只是关于ammo的所有知识。我甚至不会称它为
myammont
,只是称它为
ammo
(而且,它可能是一个不可变的结构,而不是一个可变的类,尽管它是一个结构(正确地说)我完全同意,这更多的是为了证明它实际上是一个简单的包装器类。不过我的观点是,你不应该把它看作包装器,而是“ammo”的表示形式,它只不过是一个int而已。从概念上讲,它不是一个包装器,它只是关于弹药的所有知识。