2016-04-21 25 views
1

由于this.name不工作与像静态类方法参数相同的名称来访问领域,我正在寻找一种方式来做到这一点。C#静态类领域和参数同名

作为一个例子我想这样做:

static class test 
{ 
    private static string aString; 
    public static void method(string aString) 
    { 
     // aString (field) = aString (parameter) 
    } 
} 
+2

更好的选择是将*参数*重命名为'astring'。约定是参数以小写字母开头 –

回答

7

使用:

test.Astring = x; 

即替换与类名,测试在这种情况下。

+0

非常感谢! –

+0

*将参数重命名为'aString'更好。否则,下一个问题将是“为什么我不能修改我的静态字段?” –

+0

@PanagiotisKanavos我同意 – Henningsson

0
static class test 
{ 
    private static string Astring="static"; 
    public static void method(string Astring) 
    { 
     string passedString = Astring; // will be the passed value 
     string staticField = test.Astring; // will be static 
    } 
} 

如果我们调用像test.method("Parameter");staticField将具有值staticpassedString的值将Parameter的方法。

关键字this表示该类的当前实例;静态 领域无法通过实例来访问你要访问的静态字段,而不是使用类 名。

注意: - 但请保重,而naming the variables。避免在同一班上给同一个名字。如果你像下面这样定义类,最好:

static class test 
    { 
     private static string StaticAstring="static"; 
     public static void method(string passedAstring) 
     { 
      string staticField = StaticAstring; // will be static 
      string passedString = passedAstring; // will be the passed value 
     } 
    } 
+0

此刻你已经命名了你的局部变量。 –

+0

@JonSkeet:谢谢你提及,我纠正了 –