如何从类中调用变量而不调用类-c#?
我想使用此类中的常量变量:如何从类中调用变量而不调用类-c#?,c#,class,C#,Class,我想使用此类中的常量变量: class foo { public const bool x = true; } 有没有办法不用foo.x就使用x 我想这样使用它: if( x ) 不是这样的: if( foo.x ) 首先,它需要公开访问 public class foo { public const bool x = true; } 然后你可以把这个值存储在一个变量中 var x = foo.x; if(x) { .. } 实现这一点的唯一方法是将foo标记为
class foo
{
public const bool x = true;
}
有没有办法不用foo.x就使用x
我想这样使用它:
if( x )
不是这样的:
if( foo.x )
首先,它需要公开访问
public class foo
{
public const bool x = true;
}
然后你可以把这个值存储在一个变量中
var x = foo.x;
if(x) { .. }
实现这一点的唯一方法是将
foo
标记为静态,并在希望访问foo.x
的位置使用x
namespace Foo
{
static class Bar
{
public const bool x = true;
}
}
后来:
using static Foo.Bar;
Console.WriteLine(x);
使用static
是一种C#特性,因此在使用C#6之前请确保使用它。否,成员始终是类的成员,因此您必须通过类名调用静态(或常量)变量,或者调用实例上的成员
因此,这将起作用:
public class Foo { public static int SomeInt {get;set;} = 12; }
int i = Foo.SomeInt;
或:
如Marcin所示,您可以通过使用静态的
来隐藏真相。不过,它是通过类调用的。除非您在foo
类中,否则不会调用。foo.x
有什么问题吗?foo.x
也不会工作,除非你将x
标记为public。格洛林是对的。无论如何,你不能把它称为x,因为它是在a中定义的class@cnom在C#中没有全局变量。所有东西都必须在类或结构上下文中声明。如果有人可以在不创建foo的情况下使用x,那么x与foo是解耦的。那么,为什么要将它放在foo中呢?您仍然在使用类引用,但是您正在使用通过隐藏它。虽然很聪明…@Patrickhoffman是的。但使用
的常规也是一样的-实际上,您在名称空间中使用完全限定名,但使用
将其隐藏在后面。是的,没错。我只是想指出这其实没什么不同。太聪明了,太有可能被滥用,代码也不清楚:)。但这是一个很好的选择。@DavidL我认为它主要用于将给定静态类中定义的范围扩展方法引入(而不是来自给定命名空间的所有方法)。但实际上你可以带任何东西:)
public class Foo { public int SomeInt {get;set;} = 12; }
Foo f = new Foo();
int i = foo.SomeInt;